// every 1 1$32 do
   0: GO 2
   2: DISABLE
// begin enable ;
   3: ENABLE
// CreateCratesArea ( Rand ( 3 , 5 ) , area1 , true ) ;
   4: LD_INT 3
   6: PPUSH
   7: LD_INT 5
   9: PPUSH
  10: CALL_OW 12
  14: PPUSH
  15: LD_INT 10
  17: PPUSH
  18: LD_INT 1
  20: PPUSH
  21: CALL_OW 55
// end ;
  25: END
// every 0 0$1 trigger isdead ( maniek ) do
  26: LD_EXP 8
  30: PPUSH
  31: CALL_OW 301
  35: IFFALSE 47
  37: GO 39
  39: DISABLE
// begin Youlost ( die ) ;
  40: LD_STRING die
  42: PPUSH
  43: CALL_OW 104
// end ;
  47: END
// every 0 0$1 trigger isdead ( gizold ) do
  48: LD_EXP 9
  52: PPUSH
  53: CALL_OW 301
  57: IFFALSE 69
  59: GO 61
  61: DISABLE
// begin Youlost ( die ) ;
  62: LD_STRING die
  64: PPUSH
  65: CALL_OW 104
// end ;
  69: END
// every 0 0$1 trigger isdead ( szakal ) do
  70: LD_EXP 6
  74: PPUSH
  75: CALL_OW 301
  79: IFFALSE 91
  81: GO 83
  83: DISABLE
// begin Youlost ( die ) ;
  84: LD_STRING die
  86: PPUSH
  87: CALL_OW 104
// end ;
  91: END
// every 0 0$1 trigger isdead ( smoke ) do
  92: LD_EXP 10
  96: PPUSH
  97: CALL_OW 301
 101: IFFALSE 113
 103: GO 105
 105: DISABLE
// begin Youlost ( die ) ;
 106: LD_STRING die
 108: PPUSH
 109: CALL_OW 104
// end ; end_of_file
 113: END
// export RuPoj ; starting begin Fabryka_Zniszczona = false ;
 114: LD_ADDR_EXP 2
 118: PUSH
 119: LD_INT 0
 121: ST_TO_ADDR
// enable ( 90 ) ;
 122: LD_INT 90
 124: ENABLE_MARKED
// RandomizeAll ;
 125: CALL_OW 11
// Resetfog ;
 129: CALL_OW 335
// InGameOn ;
 133: CALL_OW 8
// PrepareEastLegion ;
 137: CALL 1662 0 0
// PrepareRussian ;
 141: CALL 2032 0 0
// PrepareArabian ;
 145: CALL 3006 0 0
// PrepareOilBarrel ;
 149: CALL 5485 0 0
// PrepareNature ;
 153: CALL 5713 0 0
// SetSide ( [ maniek , gizold , smoke ] , 7 ) ;
 157: LD_EXP 8
 161: PUSH
 162: LD_EXP 9
 166: PUSH
 167: LD_EXP 10
 171: PUSH
 172: EMPTY
 173: LIST
 174: LIST
 175: LIST
 176: PPUSH
 177: LD_INT 7
 179: PPUSH
 180: CALL_OW 235
// centeronunits ( szakal ) ;
 184: LD_EXP 6
 188: PPUSH
 189: CALL_OW 85
// Say ( szakal , p1 ) ;
 193: LD_EXP 6
 197: PPUSH
 198: LD_STRING p1
 200: PPUSH
 201: CALL_OW 88
// SayRadio ( szakal , p2 ) ;
 205: LD_EXP 6
 209: PPUSH
 210: LD_STRING p2
 212: PPUSH
 213: CALL_OW 94
// SayRadio ( szakal , p3 ) ;
 217: LD_EXP 6
 221: PPUSH
 222: LD_STRING p3
 224: PPUSH
 225: CALL_OW 94
// SayRadio ( gizold , p4 ) ;
 229: LD_EXP 9
 233: PPUSH
 234: LD_STRING p4
 236: PPUSH
 237: CALL_OW 94
// SayRadio ( szakal , p5 ) ;
 241: LD_EXP 6
 245: PPUSH
 246: LD_STRING p5
 248: PPUSH
 249: CALL_OW 94
// SayRadio ( gizold , p6 ) ;
 253: LD_EXP 9
 257: PPUSH
 258: LD_STRING p6
 260: PPUSH
 261: CALL_OW 94
// SayRadio ( gizold , p7 ) ;
 265: LD_EXP 9
 269: PPUSH
 270: LD_STRING p7
 272: PPUSH
 273: CALL_OW 94
// ChangeMissionObjectives ( C1 ) ;
 277: LD_STRING C1
 279: PPUSH
 280: CALL_OW 337
// SaveForQuickRestart ;
 284: CALL_OW 22
// ingameoff ;
 288: CALL_OW 9
// end ;
 292: END
// every 0 0$1 trigger See ( GetSide ( szakal ) , maniek ) do
 293: LD_EXP 6
 297: PPUSH
 298: CALL_OW 255
 302: PPUSH
 303: LD_EXP 8
 307: PPUSH
 308: CALL_OW 292
 312: IFFALSE 449
 314: GO 316
 316: DISABLE
// begin ingameon ;
 317: CALL_OW 8
// CenterOnUnits ( [ maniek , szakal ] ) ;
 321: LD_EXP 8
 325: PUSH
 326: LD_EXP 6
 330: PUSH
 331: EMPTY
 332: LIST
 333: LIST
 334: PPUSH
 335: CALL_OW 85
// SetSide ( maniek , GetSide ( szakal ) ) ;
 339: LD_EXP 8
 343: PPUSH
 344: LD_EXP 6
 348: PPUSH
 349: CALL_OW 255
 353: PPUSH
 354: CALL_OW 235
// say ( maniek , m1 ) ;
 358: LD_EXP 8
 362: PPUSH
 363: LD_STRING m1
 365: PPUSH
 366: CALL_OW 88
// say ( szakal , m2 ) ;
 370: LD_EXP 6
 374: PPUSH
 375: LD_STRING m2
 377: PPUSH
 378: CALL_OW 88
// sayradio ( szakal , m3 ) ;
 382: LD_EXP 6
 386: PPUSH
 387: LD_STRING m3
 389: PPUSH
 390: CALL_OW 94
// sayradio ( gizold , m4 ) ;
 394: LD_EXP 9
 398: PPUSH
 399: LD_STRING m4
 401: PPUSH
 402: CALL_OW 94
// sayradio ( gizold , m5 ) ;
 406: LD_EXP 9
 410: PPUSH
 411: LD_STRING m5
 413: PPUSH
 414: CALL_OW 94
// ChangeMissionObjectives ( C2o ) ;
 418: LD_STRING C2o
 420: PPUSH
 421: CALL_OW 337
// RevealFogArea ( 8 , kurwa ) ;
 425: LD_INT 8
 427: PPUSH
 428: LD_INT 11
 430: PPUSH
 431: CALL_OW 332
// CenterOnXY ( 110 , 27 ) ;
 435: LD_INT 110
 437: PPUSH
 438: LD_INT 27
 440: PPUSH
 441: CALL_OW 84
// ingameoff ;
 445: CALL_OW 9
// end ;
 449: END
// every 0 0$1 trigger IsInArea ( maniek , kurwa ) do
 450: LD_EXP 8
 454: PPUSH
 455: LD_INT 11
 457: PPUSH
 458: CALL_OW 308
 462: IFFALSE 724
 464: GO 466
 466: DISABLE
// begin InGameOn ;
 467: CALL_OW 8
// SetAreaMapShow ( kurwa , 0 ) ;
 471: LD_INT 11
 473: PPUSH
 474: LD_INT 0
 476: PPUSH
 477: CALL_OW 424
// centeronunits ( [ szakal , gizold ] ) ;
 481: LD_EXP 6
 485: PUSH
 486: LD_EXP 9
 490: PUSH
 491: EMPTY
 492: LIST
 493: LIST
 494: PPUSH
 495: CALL_OW 85
// Setside ( [ gizold , smoke ] , 8 ) ;
 499: LD_EXP 9
 503: PUSH
 504: LD_EXP 10
 508: PUSH
 509: EMPTY
 510: LIST
 511: LIST
 512: PPUSH
 513: LD_INT 8
 515: PPUSH
 516: CALL_OW 235
// say ( szakal , c1 ) ;
 520: LD_EXP 6
 524: PPUSH
 525: LD_STRING c1
 527: PPUSH
 528: CALL_OW 88
// say ( szakal , c2 ) ;
 532: LD_EXP 6
 536: PPUSH
 537: LD_STRING c2
 539: PPUSH
 540: CALL_OW 88
// say ( gizold , c3 ) ;
 544: LD_EXP 9
 548: PPUSH
 549: LD_STRING c3
 551: PPUSH
 552: CALL_OW 88
// say ( gizold , c4 ) ;
 556: LD_EXP 9
 560: PPUSH
 561: LD_STRING c4
 563: PPUSH
 564: CALL_OW 88
// sayradio ( gizold , c5 ) ;
 568: LD_EXP 9
 572: PPUSH
 573: LD_STRING c5
 575: PPUSH
 576: CALL_OW 94
// sayradio ( gizold , c6 ) ;
 580: LD_EXP 9
 584: PPUSH
 585: LD_STRING c6
 587: PPUSH
 588: CALL_OW 94
// sayradio ( lesiu , c7 ) ;
 592: LD_EXP 7
 596: PPUSH
 597: LD_STRING c7
 599: PPUSH
 600: CALL_OW 94
// sayradio ( szakal , c8 ) ;
 604: LD_EXP 6
 608: PPUSH
 609: LD_STRING c8
 611: PPUSH
 612: CALL_OW 94
// sayradio ( lesiu , c9 ) ;
 616: LD_EXP 7
 620: PPUSH
 621: LD_STRING c9
 623: PPUSH
 624: CALL_OW 94
// Say ( gizold , c10 ) ;
 628: LD_EXP 9
 632: PPUSH
 633: LD_STRING c10
 635: PPUSH
 636: CALL_OW 88
// ChangeMissionObjectives ( C3 ) ;
 640: LD_STRING C3
 642: PPUSH
 643: CALL_OW 337
// SetAreaMapShow ( koniec , 1 ) ;
 647: LD_INT 12
 649: PPUSH
 650: LD_INT 1
 652: PPUSH
 653: CALL_OW 424
// InGameOff ;
 657: CALL_OW 9
// wait ( 0 0$7 ) ;
 661: LD_INT 245
 663: PPUSH
 664: CALL_OW 67
// RuPoj = AddComConstruct ( rufab , 21 , 1 , 1 , 42 ) ;
 668: LD_ADDR_EXP 1
 672: PUSH
 673: LD_INT 34
 675: PPUSH
 676: LD_INT 21
 678: PPUSH
 679: LD_INT 1
 681: PPUSH
 682: LD_INT 1
 684: PPUSH
 685: LD_INT 42
 687: PPUSH
 688: CALL_OW 185
 692: ST_TO_ADDR
// SayRadio ( lesiu , addon1 ) ;
 693: LD_EXP 7
 697: PPUSH
 698: LD_STRING addon1
 700: PPUSH
 701: CALL_OW 94
// SayRadio ( gizold , addon2 ) ;
 705: LD_EXP 9
 709: PPUSH
 710: LD_STRING addon2
 712: PPUSH
 713: CALL_OW 94
// ChangeMissionObjectives ( C4 ) ;
 717: LD_STRING C4
 719: PPUSH
 720: CALL_OW 337
// end ;
 724: END
// every 0 0$1 trigger See ( 8 , Ar1B ) or See ( 8 , Ar2B ) do
 725: LD_INT 8
 727: PPUSH
 728: LD_INT 40
 730: PPUSH
 731: CALL_OW 292
 735: PUSH
 736: LD_INT 8
 738: PPUSH
 739: LD_INT 44
 741: PPUSH
 742: CALL_OW 292
 746: OR
 747: IFFALSE 776
 749: GO 751
 751: DISABLE
// begin say ( szakal , s1 ) ;
 752: LD_EXP 6
 756: PPUSH
 757: LD_STRING s1
 759: PPUSH
 760: CALL_OW 88
// say ( gizold , s2 ) ;
 764: LD_EXP 9
 768: PPUSH
 769: LD_STRING s2
 771: PPUSH
 772: CALL_OW 88
// end ;
 776: END
// every 0 0$2 trigger IsInArea ( gizold , koniec ) do
 777: LD_EXP 9
 781: PPUSH
 782: LD_INT 12
 784: PPUSH
 785: CALL_OW 308
 789: IFFALSE 830
 791: GO 793
 793: DISABLE
// begin Ingameon ;
 794: CALL_OW 8
// Say ( maniek , k1 ) ;
 798: LD_EXP 8
 802: PPUSH
 803: LD_STRING k1
 805: PPUSH
 806: CALL_OW 88
// Say ( gizold , k2 ) ;
 810: LD_EXP 9
 814: PPUSH
 815: LD_STRING k2
 817: PPUSH
 818: CALL_OW 88
// EndMission ;
 822: CALL 871 0 0
// ingameoff ;
 826: CALL_OW 9
// end ;
 830: END
// export Fabryka_Zniszczona ; every 0 0$1 trigger IsDead ( Rufab ) do
 831: LD_INT 34
 833: PPUSH
 834: CALL_OW 301
 838: IFFALSE 870
 840: GO 842
 842: DISABLE
// begin Say ( Smoke , addon3 ) ;
 843: LD_EXP 10
 847: PPUSH
 848: LD_STRING addon3
 850: PPUSH
 851: CALL_OW 88
// Fabryka_Zniszczona = true ;
 855: LD_ADDR_EXP 2
 859: PUSH
 860: LD_INT 1
 862: ST_TO_ADDR
// ChangeMissionObjectives ( C4O ) ;
 863: LD_STRING C4O
 865: PPUSH
 866: CALL_OW 337
// end ;
 870: END
// export M1Dec1 , M1Dec2 ; export function EndMission ; begin
 871: LD_INT 0
 873: PPUSH
// AddMedal ( med1 , 1 ) ;
 874: LD_STRING med1
 876: PPUSH
 877: LD_INT 1
 879: PPUSH
 880: CALL_OW 101
// if Fabryka_Zniszczona = true then
 884: LD_EXP 2
 888: PUSH
 889: LD_INT 1
 891: EQUAL
 892: IFFALSE 954
// begin AddMedal ( med2 , 1 ) ;
 894: LD_STRING med2
 896: PPUSH
 897: LD_INT 1
 899: PPUSH
 900: CALL_OW 101
// uc_side = 0 ;
 904: LD_ADDR_OWVAR 20
 908: PUSH
 909: LD_INT 0
 911: ST_TO_ADDR
// M1Dec1 := CreateHuman ;
 912: LD_ADDR_EXP 3
 916: PUSH
 917: CALL_OW 44
 921: ST_TO_ADDR
// PlaceUnitXY ( M1Dec1 , 124 , 12 , false ) ;
 922: LD_EXP 3
 926: PPUSH
 927: LD_INT 124
 929: PPUSH
 930: LD_INT 12
 932: PPUSH
 933: LD_INT 0
 935: PPUSH
 936: CALL_OW 48
// SaveCharacters ( M1Dec1 , M1Dec1 ) ;
 940: LD_EXP 3
 944: PPUSH
 945: LD_STRING M1Dec1
 947: PPUSH
 948: CALL_OW 38
// end else
 952: GO 1005
// begin AddMedal ( med2 , - 1 ) ;
 954: LD_STRING med2
 956: PPUSH
 957: LD_INT 1
 959: NEG
 960: PPUSH
 961: CALL_OW 101
// M1Dec2 := CreateHuman ;
 965: LD_ADDR_EXP 4
 969: PUSH
 970: CALL_OW 44
 974: ST_TO_ADDR
// PlaceUnitXY ( M1Dec2 , 124 , 12 , false ) ;
 975: LD_EXP 4
 979: PPUSH
 980: LD_INT 124
 982: PPUSH
 983: LD_INT 12
 985: PPUSH
 986: LD_INT 0
 988: PPUSH
 989: CALL_OW 48
// SaveCharacters ( M1Dec2 , M1Dec2 ) ;
 993: LD_EXP 4
 997: PPUSH
 998: LD_STRING M1Dec2
1000: PPUSH
1001: CALL_OW 38
// end ; AddMedal ( med3 , 1 ) ;
1005: LD_STRING med3
1007: PPUSH
1008: LD_INT 1
1010: PPUSH
1011: CALL_OW 101
// GiveMedals ( Main ) ;
1015: LD_STRING Main
1017: PPUSH
1018: CALL_OW 102
// RewardPeople ( [ szakal , gizold , maniek , smoke ] ) ;
1022: LD_EXP 6
1026: PUSH
1027: LD_EXP 9
1031: PUSH
1032: LD_EXP 8
1036: PUSH
1037: LD_EXP 10
1041: PUSH
1042: EMPTY
1043: LIST
1044: LIST
1045: LIST
1046: LIST
1047: PPUSH
1048: CALL_OW 43
// SaveCharacters ( maniek , maniek ) ;
1052: LD_EXP 8
1056: PPUSH
1057: LD_STRING maniek
1059: PPUSH
1060: CALL_OW 38
// SaveCharacters ( szakal , szakal ) ;
1064: LD_EXP 6
1068: PPUSH
1069: LD_STRING szakal
1071: PPUSH
1072: CALL_OW 38
// SaveCharacters ( smoke , smoke ) ;
1076: LD_EXP 10
1080: PPUSH
1081: LD_STRING smoke
1083: PPUSH
1084: CALL_OW 38
// SaveCharacters ( gizold , gizold ) ;
1088: LD_EXP 9
1092: PPUSH
1093: LD_STRING gizold
1095: PPUSH
1096: CALL_OW 38
// youwin ;
1100: CALL_OW 103
// end ;
1104: LD_VAR 0 1
1108: RET
// every 0 0$03 marked 90 do var i , un , filter , fac ;
1109: GO 1111
1111: DISABLE
1112: LD_INT 0
1114: PPUSH
1115: PPUSH
1116: PPUSH
1117: PPUSH
// begin enable ;
1118: ENABLE
// filter := FilterAllUnits ( [ [ f_side , 3 ] , [ f_type , unit_vehicle ] ] ) ;
1119: LD_ADDR_VAR 0 3
1123: PUSH
1124: LD_INT 22
1126: PUSH
1127: LD_INT 3
1129: PUSH
1130: EMPTY
1131: LIST
1132: LIST
1133: PUSH
1134: LD_INT 21
1136: PUSH
1137: LD_INT 2
1139: PUSH
1140: EMPTY
1141: LIST
1142: LIST
1143: PUSH
1144: EMPTY
1145: LIST
1146: LIST
1147: PPUSH
1148: CALL_OW 69
1152: ST_TO_ADDR
// if filter > 0 then
1153: LD_VAR 0 3
1157: PUSH
1158: LD_INT 0
1160: GREATER
1161: IFFALSE 1244
// begin for i = 1 to filter do
1163: LD_ADDR_VAR 0 1
1167: PUSH
1168: DOUBLE
1169: LD_INT 1
1171: DEC
1172: ST_TO_ADDR
1173: LD_VAR 0 3
1177: PUSH
1178: FOR_TO
1179: IFFALSE 1242
// if See ( 8 , filter [ i ] ) then
1181: LD_INT 8
1183: PPUSH
1184: LD_VAR 0 3
1188: PUSH
1189: LD_VAR 0 1
1193: ARRAY
1194: PPUSH
1195: CALL_OW 292
1199: IFFALSE 1240
// begin disable ( 90 ) ;
1201: LD_INT 90
1203: DISABLE_MARKED
// CenterNowOnUnits ( RuPoj ) ;
1204: LD_EXP 1
1208: PPUSH
1209: CALL_OW 87
// Say ( Maniek , addon4 ) ;
1213: LD_EXP 8
1217: PPUSH
1218: LD_STRING addon4
1220: PPUSH
1221: CALL_OW 88
// Say ( Szakal , addon5 ) ;
1225: LD_EXP 6
1229: PPUSH
1230: LD_STRING addon5
1232: PPUSH
1233: CALL_OW 88
// disable ( 90 ) ;
1237: LD_INT 90
1239: DISABLE_MARKED
// end ;
1240: GO 1178
1242: POP
1243: POP
// end ; end ;
1244: PPOPN 4
1246: END
// every 3 3$1 trigger IsDead ( Ar1B ) and IsDead ( Ar2B ) and IsDead ( ArSzef ) do
1247: LD_INT 40
1249: PPUSH
1250: CALL_OW 301
1254: PUSH
1255: LD_INT 44
1257: PPUSH
1258: CALL_OW 301
1262: AND
1263: PUSH
1264: LD_EXP 16
1268: PPUSH
1269: CALL_OW 301
1273: AND
1274: IFFALSE 1419
1276: GO 1278
1278: DISABLE
// begin ComExitBuilding ( SoldInBarrack [ 1 ] ) ;
1279: LD_EXP 17
1283: PUSH
1284: LD_INT 1
1286: ARRAY
1287: PPUSH
1288: CALL_OW 122
// ComExitBuilding ( SoldInBarrack [ 2 ] ) ;
1292: LD_EXP 17
1296: PUSH
1297: LD_INT 2
1299: ARRAY
1300: PPUSH
1301: CALL_OW 122
// AddComAgressiveMove ( SoldInBarrack [ 1 ] , 96 , 40 ) ;
1305: LD_EXP 17
1309: PUSH
1310: LD_INT 1
1312: ARRAY
1313: PPUSH
1314: LD_INT 96
1316: PPUSH
1317: LD_INT 40
1319: PPUSH
1320: CALL_OW 174
// AddComAgressiveMove ( SoldInBarrack [ 1 ] , 28 , 7 ) ;
1324: LD_EXP 17
1328: PUSH
1329: LD_INT 1
1331: ARRAY
1332: PPUSH
1333: LD_INT 28
1335: PPUSH
1336: LD_INT 7
1338: PPUSH
1339: CALL_OW 174
// AddComAgressiveMove ( SoldInBarrack [ 1 ] , 50 , 59 ) ;
1343: LD_EXP 17
1347: PUSH
1348: LD_INT 1
1350: ARRAY
1351: PPUSH
1352: LD_INT 50
1354: PPUSH
1355: LD_INT 59
1357: PPUSH
1358: CALL_OW 174
// AddComAgressiveMove ( SoldInBarrack [ 2 ] , 96 , 40 ) ;
1362: LD_EXP 17
1366: PUSH
1367: LD_INT 2
1369: ARRAY
1370: PPUSH
1371: LD_INT 96
1373: PPUSH
1374: LD_INT 40
1376: PPUSH
1377: CALL_OW 174
// AddComAgressiveMove ( SoldInBarrack [ 2 ] , 28 , 7 ) ;
1381: LD_EXP 17
1385: PUSH
1386: LD_INT 2
1388: ARRAY
1389: PPUSH
1390: LD_INT 28
1392: PPUSH
1393: LD_INT 7
1395: PPUSH
1396: CALL_OW 174
// AddComAgressiveMove ( SoldInBarrack [ 2 ] , 50 , 59 ) ;
1400: LD_EXP 17
1404: PUSH
1405: LD_INT 2
1407: ARRAY
1408: PPUSH
1409: LD_INT 50
1411: PPUSH
1412: LD_INT 59
1414: PPUSH
1415: CALL_OW 174
// end ;
1419: END
// export RuEng ; every 0 0$1 trigger FilterUnitsInArea ( ZbiorkaRu , [ [ f_side , 3 ] , [ f_type , unit_human ] ] ) = 2 do
1420: LD_INT 19
1422: PPUSH
1423: LD_INT 22
1425: PUSH
1426: LD_INT 3
1428: PUSH
1429: EMPTY
1430: LIST
1431: LIST
1432: PUSH
1433: LD_INT 21
1435: PUSH
1436: LD_INT 1
1438: PUSH
1439: EMPTY
1440: LIST
1441: LIST
1442: PUSH
1443: EMPTY
1444: LIST
1445: LIST
1446: PPUSH
1447: CALL_OW 70
1451: PUSH
1452: LD_INT 2
1454: EQUAL
1455: IFFALSE 1661
1457: GO 1459
1459: DISABLE
// begin SetSide ( ArDepo , 6 ) ;
1460: LD_INT 71
1462: PPUSH
1463: LD_INT 6
1465: PPUSH
1466: CALL_OW 235
// uc_side = 6 ;
1470: LD_ADDR_OWVAR 20
1474: PUSH
1475: LD_INT 6
1477: ST_TO_ADDR
// uc_nation = 3 ;
1478: LD_ADDR_OWVAR 21
1482: PUSH
1483: LD_INT 3
1485: ST_TO_ADDR
// hc_gallery =  ;
1486: LD_ADDR_OWVAR 33
1490: PUSH
1491: LD_STRING 
1493: ST_TO_ADDR
// hc_name =  ;
1494: LD_ADDR_OWVAR 26
1498: PUSH
1499: LD_STRING 
1501: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
1502: LD_ADDR_OWVAR 29
1506: PUSH
1507: LD_INT 9
1509: PPUSH
1510: LD_INT 11
1512: PPUSH
1513: CALL_OW 12
1517: PUSH
1518: LD_INT 10
1520: PPUSH
1521: LD_INT 12
1523: PPUSH
1524: CALL_OW 12
1528: PUSH
1529: EMPTY
1530: LIST
1531: LIST
1532: ST_TO_ADDR
// hc_skills = [ Rand ( 0 , 4 ) , Rand ( 4 , 7 ) , Rand ( 0 , 4 ) , Rand ( 0 , 4 ) ] ;
1533: LD_ADDR_OWVAR 31
1537: PUSH
1538: LD_INT 0
1540: PPUSH
1541: LD_INT 4
1543: PPUSH
1544: CALL_OW 12
1548: PUSH
1549: LD_INT 4
1551: PPUSH
1552: LD_INT 7
1554: PPUSH
1555: CALL_OW 12
1559: PUSH
1560: LD_INT 0
1562: PPUSH
1563: LD_INT 4
1565: PPUSH
1566: CALL_OW 12
1570: PUSH
1571: LD_INT 0
1573: PPUSH
1574: LD_INT 4
1576: PPUSH
1577: CALL_OW 12
1581: PUSH
1582: EMPTY
1583: LIST
1584: LIST
1585: LIST
1586: LIST
1587: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
1588: LD_ADDR_OWVAR 27
1592: PUSH
1593: LD_INT 1
1595: PPUSH
1596: LD_INT 2
1598: PPUSH
1599: CALL_OW 12
1603: ST_TO_ADDR
// hc_class = 2 ;
1604: LD_ADDR_OWVAR 28
1608: PUSH
1609: LD_INT 2
1611: ST_TO_ADDR
// RuEng = CreateHuman ;
1612: LD_ADDR_EXP 5
1616: PUSH
1617: CALL_OW 44
1621: ST_TO_ADDR
// PlaceUnitXY ( RuEng , 50 , 63 , false ) ;
1622: LD_EXP 5
1626: PPUSH
1627: LD_INT 50
1629: PPUSH
1630: LD_INT 63
1632: PPUSH
1633: LD_INT 0
1635: PPUSH
1636: CALL_OW 48
// ComBuild ( RuEng , 4 , 65 , 71 , 4 ) ;
1640: LD_EXP 5
1644: PPUSH
1645: LD_INT 4
1647: PPUSH
1648: LD_INT 65
1650: PPUSH
1651: LD_INT 71
1653: PPUSH
1654: LD_INT 4
1656: PPUSH
1657: CALL_OW 145
// end ; end_of_file
1661: END
// export Szakal , Lesiu , Maniek , Gizold , Smoke ; export Ru1So , Ru2So ; export Ar1So , Ar2So , Ar3So , ArSzef ; export function PrepareEastLegion ; begin
1662: LD_INT 0
1664: PPUSH
// uc_side = 8 ;
1665: LD_ADDR_OWVAR 20
1669: PUSH
1670: LD_INT 8
1672: ST_TO_ADDR
// uc_nation = 1 ;
1673: LD_ADDR_OWVAR 21
1677: PUSH
1678: LD_INT 1
1680: ST_TO_ADDR
// Lesiu = CreateCharacter ( Lesiu ) ;
1681: LD_ADDR_EXP 7
1685: PUSH
1686: LD_STRING Lesiu
1688: PPUSH
1689: CALL_OW 34
1693: ST_TO_ADDR
// Szakal = CreateCharacter ( Szakal ) ;
1694: LD_ADDR_EXP 6
1698: PUSH
1699: LD_STRING Szakal
1701: PPUSH
1702: CALL_OW 34
1706: ST_TO_ADDR
// PlaceUnitArea ( Szakal , SzakalSpawn , true ) ;
1707: LD_EXP 6
1711: PPUSH
1712: LD_INT 3
1714: PPUSH
1715: LD_INT 1
1717: PPUSH
1718: CALL_OW 49
// uc_side = 0 ;
1722: LD_ADDR_OWVAR 20
1726: PUSH
1727: LD_INT 0
1729: ST_TO_ADDR
// hc_gallery = ELGalNefarem1 ;
1730: LD_ADDR_OWVAR 33
1734: PUSH
1735: LD_STRING ELGalNefarem1
1737: ST_TO_ADDR
// hc_face_number = 1 ;
1738: LD_ADDR_OWVAR 34
1742: PUSH
1743: LD_INT 1
1745: ST_TO_ADDR
// hc_name = Gizold ;
1746: LD_ADDR_OWVAR 26
1750: PUSH
1751: LD_STRING Gizold
1753: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
1754: LD_ADDR_OWVAR 29
1758: PUSH
1759: LD_INT 9
1761: PPUSH
1762: LD_INT 11
1764: PPUSH
1765: CALL_OW 12
1769: PUSH
1770: LD_INT 10
1772: PPUSH
1773: LD_INT 12
1775: PPUSH
1776: CALL_OW 12
1780: PUSH
1781: EMPTY
1782: LIST
1783: LIST
1784: ST_TO_ADDR
// hc_skills = [ 3 , 1 , 1 , 2 ] ;
1785: LD_ADDR_OWVAR 31
1789: PUSH
1790: LD_INT 3
1792: PUSH
1793: LD_INT 1
1795: PUSH
1796: LD_INT 1
1798: PUSH
1799: LD_INT 2
1801: PUSH
1802: EMPTY
1803: LIST
1804: LIST
1805: LIST
1806: LIST
1807: ST_TO_ADDR
// hc_sex = sex_male ;
1808: LD_ADDR_OWVAR 27
1812: PUSH
1813: LD_INT 1
1815: ST_TO_ADDR
// hc_class = 1 ;
1816: LD_ADDR_OWVAR 28
1820: PUSH
1821: LD_INT 1
1823: ST_TO_ADDR
// Gizold := CreateHuman ;
1824: LD_ADDR_EXP 9
1828: PUSH
1829: CALL_OW 44
1833: ST_TO_ADDR
// PlaceUnitArea ( Gizold , EkipaSpawn , false ) ;
1834: LD_EXP 9
1838: PPUSH
1839: LD_INT 2
1841: PPUSH
1842: LD_INT 0
1844: PPUSH
1845: CALL_OW 49
// ComHold ( Gizold ) ;
1849: LD_EXP 9
1853: PPUSH
1854: CALL_OW 140
// uc_nation = 3 ;
1858: LD_ADDR_OWVAR 21
1862: PUSH
1863: LD_INT 3
1865: ST_TO_ADDR
// hc_gallery = ELGalNefarem1 ;
1866: LD_ADDR_OWVAR 33
1870: PUSH
1871: LD_STRING ELGalNefarem1
1873: ST_TO_ADDR
// hc_face_number = 3 ;
1874: LD_ADDR_OWVAR 34
1878: PUSH
1879: LD_INT 3
1881: ST_TO_ADDR
// hc_name = Smoke ;
1882: LD_ADDR_OWVAR 26
1886: PUSH
1887: LD_STRING Smoke
1889: ST_TO_ADDR
// hc_skills = [ 3 , 2 , 0 , 2 ] ;
1890: LD_ADDR_OWVAR 31
1894: PUSH
1895: LD_INT 3
1897: PUSH
1898: LD_INT 2
1900: PUSH
1901: LD_INT 0
1903: PUSH
1904: LD_INT 2
1906: PUSH
1907: EMPTY
1908: LIST
1909: LIST
1910: LIST
1911: LIST
1912: ST_TO_ADDR
// Smoke := CreateHuman ;
1913: LD_ADDR_EXP 10
1917: PUSH
1918: CALL_OW 44
1922: ST_TO_ADDR
// PlaceUnitArea ( Smoke , EkipaSpawn , false ) ;
1923: LD_EXP 10
1927: PPUSH
1928: LD_INT 2
1930: PPUSH
1931: LD_INT 0
1933: PPUSH
1934: CALL_OW 49
// ComHold ( Smoke ) ;
1938: LD_EXP 10
1942: PPUSH
1943: CALL_OW 140
// hc_gallery = maniek ;
1947: LD_ADDR_OWVAR 33
1951: PUSH
1952: LD_STRING maniek
1954: ST_TO_ADDR
// hc_face_number = 1 ;
1955: LD_ADDR_OWVAR 34
1959: PUSH
1960: LD_INT 1
1962: ST_TO_ADDR
// hc_name = Maniek ;
1963: LD_ADDR_OWVAR 26
1967: PUSH
1968: LD_STRING Maniek
1970: ST_TO_ADDR
// hc_skills = [ 3 , 1 , 2 , 0 ] ;
1971: LD_ADDR_OWVAR 31
1975: PUSH
1976: LD_INT 3
1978: PUSH
1979: LD_INT 1
1981: PUSH
1982: LD_INT 2
1984: PUSH
1985: LD_INT 0
1987: PUSH
1988: EMPTY
1989: LIST
1990: LIST
1991: LIST
1992: LIST
1993: ST_TO_ADDR
// hc_class = 4 ;
1994: LD_ADDR_OWVAR 28
1998: PUSH
1999: LD_INT 4
2001: ST_TO_ADDR
// Maniek := CreateHuman ;
2002: LD_ADDR_EXP 8
2006: PUSH
2007: CALL_OW 44
2011: ST_TO_ADDR
// PlaceUnitArea ( Maniek , ManiekSpawn , false ) ;
2012: LD_EXP 8
2016: PPUSH
2017: LD_INT 1
2019: PPUSH
2020: LD_INT 0
2022: PPUSH
2023: CALL_OW 49
// end ;
2027: LD_VAR 0 1
2031: RET
// export SoldInBarrack ; export function PrepareRussian ; var i , un ; begin
2032: LD_INT 0
2034: PPUSH
2035: PPUSH
2036: PPUSH
// uc_side = 3 ;
2037: LD_ADDR_OWVAR 20
2041: PUSH
2042: LD_INT 3
2044: ST_TO_ADDR
// uc_nation = 3 ;
2045: LD_ADDR_OWVAR 21
2049: PUSH
2050: LD_INT 3
2052: ST_TO_ADDR
// for i in rubar do
2053: LD_ADDR_VAR 0 2
2057: PUSH
2058: LD_INT 11
2060: PUSH
2061: FOR_IN
2062: IFFALSE 2250
// begin for i = 1 to 3 do
2064: LD_ADDR_VAR 0 2
2068: PUSH
2069: DOUBLE
2070: LD_INT 1
2072: DEC
2073: ST_TO_ADDR
2074: LD_INT 3
2076: PUSH
2077: FOR_TO
2078: IFFALSE 2246
// begin hc_gallery =  ;
2080: LD_ADDR_OWVAR 33
2084: PUSH
2085: LD_STRING 
2087: ST_TO_ADDR
// hc_name =  ;
2088: LD_ADDR_OWVAR 26
2092: PUSH
2093: LD_STRING 
2095: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
2096: LD_ADDR_OWVAR 29
2100: PUSH
2101: LD_INT 9
2103: PPUSH
2104: LD_INT 11
2106: PPUSH
2107: CALL_OW 12
2111: PUSH
2112: LD_INT 10
2114: PPUSH
2115: LD_INT 12
2117: PPUSH
2118: CALL_OW 12
2122: PUSH
2123: EMPTY
2124: LIST
2125: LIST
2126: ST_TO_ADDR
// hc_skills = [ Rand ( 1 , 4 ) , Rand ( 0 , 4 ) , Rand ( 0 , 4 ) , Rand ( 0 , 4 ) ] ;
2127: LD_ADDR_OWVAR 31
2131: PUSH
2132: LD_INT 1
2134: PPUSH
2135: LD_INT 4
2137: PPUSH
2138: CALL_OW 12
2142: PUSH
2143: LD_INT 0
2145: PPUSH
2146: LD_INT 4
2148: PPUSH
2149: CALL_OW 12
2153: PUSH
2154: LD_INT 0
2156: PPUSH
2157: LD_INT 4
2159: PPUSH
2160: CALL_OW 12
2164: PUSH
2165: LD_INT 0
2167: PPUSH
2168: LD_INT 4
2170: PPUSH
2171: CALL_OW 12
2175: PUSH
2176: EMPTY
2177: LIST
2178: LIST
2179: LIST
2180: LIST
2181: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
2182: LD_ADDR_OWVAR 27
2186: PUSH
2187: LD_INT 1
2189: PPUSH
2190: LD_INT 2
2192: PPUSH
2193: CALL_OW 12
2197: ST_TO_ADDR
// hc_class = 1 ;
2198: LD_ADDR_OWVAR 28
2202: PUSH
2203: LD_INT 1
2205: ST_TO_ADDR
// un = CreateHuman ;
2206: LD_ADDR_VAR 0 3
2210: PUSH
2211: CALL_OW 44
2215: ST_TO_ADDR
// SoldInBarrack = SoldInBarrack ^ un ;
2216: LD_ADDR_EXP 17
2220: PUSH
2221: LD_EXP 17
2225: PUSH
2226: LD_VAR 0 3
2230: ADD
2231: ST_TO_ADDR
// PlaceHumanInUnit ( un , rubar ) ;
2232: LD_VAR 0 3
2236: PPUSH
2237: LD_INT 11
2239: PPUSH
2240: CALL_OW 52
// end ;
2244: GO 2077
2246: POP
2247: POP
// end ;
2248: GO 2061
2250: POP
2251: POP
// for i in rufab do
2252: LD_ADDR_VAR 0 2
2256: PUSH
2257: LD_INT 34
2259: PUSH
2260: FOR_IN
2261: IFFALSE 2433
// begin for i = 1 to 1 do
2263: LD_ADDR_VAR 0 2
2267: PUSH
2268: DOUBLE
2269: LD_INT 1
2271: DEC
2272: ST_TO_ADDR
2273: LD_INT 1
2275: PUSH
2276: FOR_TO
2277: IFFALSE 2429
// begin hc_gallery =  ;
2279: LD_ADDR_OWVAR 33
2283: PUSH
2284: LD_STRING 
2286: ST_TO_ADDR
// hc_name =  ;
2287: LD_ADDR_OWVAR 26
2291: PUSH
2292: LD_STRING 
2294: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
2295: LD_ADDR_OWVAR 29
2299: PUSH
2300: LD_INT 9
2302: PPUSH
2303: LD_INT 11
2305: PPUSH
2306: CALL_OW 12
2310: PUSH
2311: LD_INT 10
2313: PPUSH
2314: LD_INT 12
2316: PPUSH
2317: CALL_OW 12
2321: PUSH
2322: EMPTY
2323: LIST
2324: LIST
2325: ST_TO_ADDR
// hc_skills = [ Rand ( 0 , 4 ) , Rand ( 0 , 4 ) , Rand ( 1 , 4 ) , Rand ( 0 , 4 ) ] ;
2326: LD_ADDR_OWVAR 31
2330: PUSH
2331: LD_INT 0
2333: PPUSH
2334: LD_INT 4
2336: PPUSH
2337: CALL_OW 12
2341: PUSH
2342: LD_INT 0
2344: PPUSH
2345: LD_INT 4
2347: PPUSH
2348: CALL_OW 12
2352: PUSH
2353: LD_INT 1
2355: PPUSH
2356: LD_INT 4
2358: PPUSH
2359: CALL_OW 12
2363: PUSH
2364: LD_INT 0
2366: PPUSH
2367: LD_INT 4
2369: PPUSH
2370: CALL_OW 12
2374: PUSH
2375: EMPTY
2376: LIST
2377: LIST
2378: LIST
2379: LIST
2380: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
2381: LD_ADDR_OWVAR 27
2385: PUSH
2386: LD_INT 1
2388: PPUSH
2389: LD_INT 2
2391: PPUSH
2392: CALL_OW 12
2396: ST_TO_ADDR
// hc_class = 3 ;
2397: LD_ADDR_OWVAR 28
2401: PUSH
2402: LD_INT 3
2404: ST_TO_ADDR
// un = CreateHuman ;
2405: LD_ADDR_VAR 0 3
2409: PUSH
2410: CALL_OW 44
2414: ST_TO_ADDR
// PlaceHumanInUnit ( un , rufab ) ;
2415: LD_VAR 0 3
2419: PPUSH
2420: LD_INT 34
2422: PPUSH
2423: CALL_OW 52
// end ;
2427: GO 2276
2429: POP
2430: POP
// end ;
2431: GO 2260
2433: POP
2434: POP
// for i in rulab do
2435: LD_ADDR_VAR 0 2
2439: PUSH
2440: LD_INT 21
2442: PUSH
2443: FOR_IN
2444: IFFALSE 2616
// begin for i = 1 to 2 do
2446: LD_ADDR_VAR 0 2
2450: PUSH
2451: DOUBLE
2452: LD_INT 1
2454: DEC
2455: ST_TO_ADDR
2456: LD_INT 2
2458: PUSH
2459: FOR_TO
2460: IFFALSE 2612
// begin hc_gallery =  ;
2462: LD_ADDR_OWVAR 33
2466: PUSH
2467: LD_STRING 
2469: ST_TO_ADDR
// hc_name =  ;
2470: LD_ADDR_OWVAR 26
2474: PUSH
2475: LD_STRING 
2477: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
2478: LD_ADDR_OWVAR 29
2482: PUSH
2483: LD_INT 9
2485: PPUSH
2486: LD_INT 11
2488: PPUSH
2489: CALL_OW 12
2493: PUSH
2494: LD_INT 10
2496: PPUSH
2497: LD_INT 12
2499: PPUSH
2500: CALL_OW 12
2504: PUSH
2505: EMPTY
2506: LIST
2507: LIST
2508: ST_TO_ADDR
// hc_skills = [ Rand ( 0 , 4 ) , Rand ( 0 , 4 ) , Rand ( 0 , 4 ) , Rand ( 1 , 4 ) ] ;
2509: LD_ADDR_OWVAR 31
2513: PUSH
2514: LD_INT 0
2516: PPUSH
2517: LD_INT 4
2519: PPUSH
2520: CALL_OW 12
2524: PUSH
2525: LD_INT 0
2527: PPUSH
2528: LD_INT 4
2530: PPUSH
2531: CALL_OW 12
2535: PUSH
2536: LD_INT 0
2538: PPUSH
2539: LD_INT 4
2541: PPUSH
2542: CALL_OW 12
2546: PUSH
2547: LD_INT 1
2549: PPUSH
2550: LD_INT 4
2552: PPUSH
2553: CALL_OW 12
2557: PUSH
2558: EMPTY
2559: LIST
2560: LIST
2561: LIST
2562: LIST
2563: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
2564: LD_ADDR_OWVAR 27
2568: PUSH
2569: LD_INT 1
2571: PPUSH
2572: LD_INT 2
2574: PPUSH
2575: CALL_OW 12
2579: ST_TO_ADDR
// hc_class = 4 ;
2580: LD_ADDR_OWVAR 28
2584: PUSH
2585: LD_INT 4
2587: ST_TO_ADDR
// un = CreateHuman ;
2588: LD_ADDR_VAR 0 3
2592: PUSH
2593: CALL_OW 44
2597: ST_TO_ADDR
// PlaceHumanInUnit ( un , rulab ) ;
2598: LD_VAR 0 3
2602: PPUSH
2603: LD_INT 21
2605: PPUSH
2606: CALL_OW 52
// end ;
2610: GO 2459
2612: POP
2613: POP
// end ;
2614: GO 2443
2616: POP
2617: POP
// for i in rudepo do
2618: LD_ADDR_VAR 0 2
2622: PUSH
2623: LD_INT 2
2625: PUSH
2626: FOR_IN
2627: IFFALSE 2799
// begin for i = 1 to 1 do
2629: LD_ADDR_VAR 0 2
2633: PUSH
2634: DOUBLE
2635: LD_INT 1
2637: DEC
2638: ST_TO_ADDR
2639: LD_INT 1
2641: PUSH
2642: FOR_TO
2643: IFFALSE 2795
// begin hc_gallery =  ;
2645: LD_ADDR_OWVAR 33
2649: PUSH
2650: LD_STRING 
2652: ST_TO_ADDR
// hc_name =  ;
2653: LD_ADDR_OWVAR 26
2657: PUSH
2658: LD_STRING 
2660: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
2661: LD_ADDR_OWVAR 29
2665: PUSH
2666: LD_INT 9
2668: PPUSH
2669: LD_INT 11
2671: PPUSH
2672: CALL_OW 12
2676: PUSH
2677: LD_INT 10
2679: PPUSH
2680: LD_INT 12
2682: PPUSH
2683: CALL_OW 12
2687: PUSH
2688: EMPTY
2689: LIST
2690: LIST
2691: ST_TO_ADDR
// hc_skills = [ Rand ( 0 , 4 ) , Rand ( 1 , 4 ) , Rand ( 0 , 4 ) , Rand ( 0 , 4 ) ] ;
2692: LD_ADDR_OWVAR 31
2696: PUSH
2697: LD_INT 0
2699: PPUSH
2700: LD_INT 4
2702: PPUSH
2703: CALL_OW 12
2707: PUSH
2708: LD_INT 1
2710: PPUSH
2711: LD_INT 4
2713: PPUSH
2714: CALL_OW 12
2718: PUSH
2719: LD_INT 0
2721: PPUSH
2722: LD_INT 4
2724: PPUSH
2725: CALL_OW 12
2729: PUSH
2730: LD_INT 0
2732: PPUSH
2733: LD_INT 4
2735: PPUSH
2736: CALL_OW 12
2740: PUSH
2741: EMPTY
2742: LIST
2743: LIST
2744: LIST
2745: LIST
2746: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
2747: LD_ADDR_OWVAR 27
2751: PUSH
2752: LD_INT 1
2754: PPUSH
2755: LD_INT 2
2757: PPUSH
2758: CALL_OW 12
2762: ST_TO_ADDR
// hc_class = 2 ;
2763: LD_ADDR_OWVAR 28
2767: PUSH
2768: LD_INT 2
2770: ST_TO_ADDR
// un = CreateHuman ;
2771: LD_ADDR_VAR 0 3
2775: PUSH
2776: CALL_OW 44
2780: ST_TO_ADDR
// PlaceHumanInUnit ( un , rudepo ) ;
2781: LD_VAR 0 3
2785: PPUSH
2786: LD_INT 2
2788: PPUSH
2789: CALL_OW 52
// end ;
2793: GO 2642
2795: POP
2796: POP
// end ;
2797: GO 2626
2799: POP
2800: POP
// hc_gallery =  ;
2801: LD_ADDR_OWVAR 33
2805: PUSH
2806: LD_STRING 
2808: ST_TO_ADDR
// hc_name =  ;
2809: LD_ADDR_OWVAR 26
2813: PUSH
2814: LD_STRING 
2816: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
2817: LD_ADDR_OWVAR 29
2821: PUSH
2822: LD_INT 9
2824: PPUSH
2825: LD_INT 11
2827: PPUSH
2828: CALL_OW 12
2832: PUSH
2833: LD_INT 10
2835: PPUSH
2836: LD_INT 12
2838: PPUSH
2839: CALL_OW 12
2843: PUSH
2844: EMPTY
2845: LIST
2846: LIST
2847: ST_TO_ADDR
// hc_skills = [ Rand ( 1 , 4 ) , Rand ( 0 , 4 ) , Rand ( 0 , 4 ) , Rand ( 0 , 4 ) ] ;
2848: LD_ADDR_OWVAR 31
2852: PUSH
2853: LD_INT 1
2855: PPUSH
2856: LD_INT 4
2858: PPUSH
2859: CALL_OW 12
2863: PUSH
2864: LD_INT 0
2866: PPUSH
2867: LD_INT 4
2869: PPUSH
2870: CALL_OW 12
2874: PUSH
2875: LD_INT 0
2877: PPUSH
2878: LD_INT 4
2880: PPUSH
2881: CALL_OW 12
2885: PUSH
2886: LD_INT 0
2888: PPUSH
2889: LD_INT 4
2891: PPUSH
2892: CALL_OW 12
2896: PUSH
2897: EMPTY
2898: LIST
2899: LIST
2900: LIST
2901: LIST
2902: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
2903: LD_ADDR_OWVAR 27
2907: PUSH
2908: LD_INT 1
2910: PPUSH
2911: LD_INT 2
2913: PPUSH
2914: CALL_OW 12
2918: ST_TO_ADDR
// hc_class = 1 ;
2919: LD_ADDR_OWVAR 28
2923: PUSH
2924: LD_INT 1
2926: ST_TO_ADDR
// Ru1So = CreateHuman ;
2927: LD_ADDR_EXP 11
2931: PUSH
2932: CALL_OW 44
2936: ST_TO_ADDR
// Ru2So = CreateHuman ;
2937: LD_ADDR_EXP 12
2941: PUSH
2942: CALL_OW 44
2946: ST_TO_ADDR
// PlaceUnitArea ( Ru1So , Ru1S , false ) ;
2947: LD_EXP 11
2951: PPUSH
2952: LD_INT 4
2954: PPUSH
2955: LD_INT 0
2957: PPUSH
2958: CALL_OW 49
// PlaceUnitArea ( Ru2So , Ru2S , false ) ;
2962: LD_EXP 12
2966: PPUSH
2967: LD_INT 5
2969: PPUSH
2970: LD_INT 0
2972: PPUSH
2973: CALL_OW 49
// ComEnterUnit ( Ru1So , Ru1B ) ;
2977: LD_EXP 11
2981: PPUSH
2982: LD_INT 28
2984: PPUSH
2985: CALL_OW 120
// ComEnterUnit ( Ru2So , Ru2B ) ;
2989: LD_EXP 12
2993: PPUSH
2994: LD_INT 30
2996: PPUSH
2997: CALL_OW 120
// end ;
3001: LD_VAR 0 1
3005: RET
// export function PrepareArabian ; var i , un ; begin
3006: LD_INT 0
3008: PPUSH
3009: PPUSH
3010: PPUSH
// uc_side = 2 ;
3011: LD_ADDR_OWVAR 20
3015: PUSH
3016: LD_INT 2
3018: ST_TO_ADDR
// uc_nation = 2 ;
3019: LD_ADDR_OWVAR 21
3023: PUSH
3024: LD_INT 2
3026: ST_TO_ADDR
// for i in arlab do
3027: LD_ADDR_VAR 0 2
3031: PUSH
3032: LD_INT 73
3034: PUSH
3035: FOR_IN
3036: IFFALSE 3208
// begin for i = 1 to 2 do
3038: LD_ADDR_VAR 0 2
3042: PUSH
3043: DOUBLE
3044: LD_INT 1
3046: DEC
3047: ST_TO_ADDR
3048: LD_INT 2
3050: PUSH
3051: FOR_TO
3052: IFFALSE 3204
// begin hc_gallery =  ;
3054: LD_ADDR_OWVAR 33
3058: PUSH
3059: LD_STRING 
3061: ST_TO_ADDR
// hc_name =  ;
3062: LD_ADDR_OWVAR 26
3066: PUSH
3067: LD_STRING 
3069: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
3070: LD_ADDR_OWVAR 29
3074: PUSH
3075: LD_INT 9
3077: PPUSH
3078: LD_INT 11
3080: PPUSH
3081: CALL_OW 12
3085: PUSH
3086: LD_INT 10
3088: PPUSH
3089: LD_INT 12
3091: PPUSH
3092: CALL_OW 12
3096: PUSH
3097: EMPTY
3098: LIST
3099: LIST
3100: ST_TO_ADDR
// hc_skills = [ Rand ( 0 , 4 ) , Rand ( 0 , 4 ) , Rand ( 0 , 4 ) , Rand ( 1 , 4 ) ] ;
3101: LD_ADDR_OWVAR 31
3105: PUSH
3106: LD_INT 0
3108: PPUSH
3109: LD_INT 4
3111: PPUSH
3112: CALL_OW 12
3116: PUSH
3117: LD_INT 0
3119: PPUSH
3120: LD_INT 4
3122: PPUSH
3123: CALL_OW 12
3127: PUSH
3128: LD_INT 0
3130: PPUSH
3131: LD_INT 4
3133: PPUSH
3134: CALL_OW 12
3138: PUSH
3139: LD_INT 1
3141: PPUSH
3142: LD_INT 4
3144: PPUSH
3145: CALL_OW 12
3149: PUSH
3150: EMPTY
3151: LIST
3152: LIST
3153: LIST
3154: LIST
3155: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
3156: LD_ADDR_OWVAR 27
3160: PUSH
3161: LD_INT 1
3163: PPUSH
3164: LD_INT 2
3166: PPUSH
3167: CALL_OW 12
3171: ST_TO_ADDR
// hc_class = 4 ;
3172: LD_ADDR_OWVAR 28
3176: PUSH
3177: LD_INT 4
3179: ST_TO_ADDR
// un = CreateHuman ;
3180: LD_ADDR_VAR 0 3
3184: PUSH
3185: CALL_OW 44
3189: ST_TO_ADDR
// PlaceHumanInUnit ( un , arlab ) ;
3190: LD_VAR 0 3
3194: PPUSH
3195: LD_INT 73
3197: PPUSH
3198: CALL_OW 52
// end ;
3202: GO 3051
3204: POP
3205: POP
// end ;
3206: GO 3035
3208: POP
3209: POP
// for i in ardepo do
3210: LD_ADDR_VAR 0 2
3214: PUSH
3215: LD_INT 71
3217: PUSH
3218: FOR_IN
3219: IFFALSE 3391
// begin for i = 1 to 1 do
3221: LD_ADDR_VAR 0 2
3225: PUSH
3226: DOUBLE
3227: LD_INT 1
3229: DEC
3230: ST_TO_ADDR
3231: LD_INT 1
3233: PUSH
3234: FOR_TO
3235: IFFALSE 3387
// begin hc_gallery =  ;
3237: LD_ADDR_OWVAR 33
3241: PUSH
3242: LD_STRING 
3244: ST_TO_ADDR
// hc_name =  ;
3245: LD_ADDR_OWVAR 26
3249: PUSH
3250: LD_STRING 
3252: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
3253: LD_ADDR_OWVAR 29
3257: PUSH
3258: LD_INT 9
3260: PPUSH
3261: LD_INT 11
3263: PPUSH
3264: CALL_OW 12
3268: PUSH
3269: LD_INT 10
3271: PPUSH
3272: LD_INT 12
3274: PPUSH
3275: CALL_OW 12
3279: PUSH
3280: EMPTY
3281: LIST
3282: LIST
3283: ST_TO_ADDR
// hc_skills = [ Rand ( 0 , 4 ) , Rand ( 1 , 4 ) , Rand ( 0 , 4 ) , Rand ( 0 , 4 ) ] ;
3284: LD_ADDR_OWVAR 31
3288: PUSH
3289: LD_INT 0
3291: PPUSH
3292: LD_INT 4
3294: PPUSH
3295: CALL_OW 12
3299: PUSH
3300: LD_INT 1
3302: PPUSH
3303: LD_INT 4
3305: PPUSH
3306: CALL_OW 12
3310: PUSH
3311: LD_INT 0
3313: PPUSH
3314: LD_INT 4
3316: PPUSH
3317: CALL_OW 12
3321: PUSH
3322: LD_INT 0
3324: PPUSH
3325: LD_INT 4
3327: PPUSH
3328: CALL_OW 12
3332: PUSH
3333: EMPTY
3334: LIST
3335: LIST
3336: LIST
3337: LIST
3338: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
3339: LD_ADDR_OWVAR 27
3343: PUSH
3344: LD_INT 1
3346: PPUSH
3347: LD_INT 2
3349: PPUSH
3350: CALL_OW 12
3354: ST_TO_ADDR
// hc_class = 2 ;
3355: LD_ADDR_OWVAR 28
3359: PUSH
3360: LD_INT 2
3362: ST_TO_ADDR
// un = CreateHuman ;
3363: LD_ADDR_VAR 0 3
3367: PUSH
3368: CALL_OW 44
3372: ST_TO_ADDR
// PlaceHumanInUnit ( un , ardepo ) ;
3373: LD_VAR 0 3
3377: PPUSH
3378: LD_INT 71
3380: PPUSH
3381: CALL_OW 52
// end ;
3385: GO 3234
3387: POP
3388: POP
// end ;
3389: GO 3218
3391: POP
3392: POP
// hc_gallery =  ;
3393: LD_ADDR_OWVAR 33
3397: PUSH
3398: LD_STRING 
3400: ST_TO_ADDR
// hc_name =  ;
3401: LD_ADDR_OWVAR 26
3405: PUSH
3406: LD_STRING 
3408: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
3409: LD_ADDR_OWVAR 29
3413: PUSH
3414: LD_INT 9
3416: PPUSH
3417: LD_INT 11
3419: PPUSH
3420: CALL_OW 12
3424: PUSH
3425: LD_INT 10
3427: PPUSH
3428: LD_INT 12
3430: PPUSH
3431: CALL_OW 12
3435: PUSH
3436: EMPTY
3437: LIST
3438: LIST
3439: ST_TO_ADDR
// hc_skills = [ Rand ( 1 , 4 ) , Rand ( 0 , 4 ) , Rand ( 0 , 4 ) , Rand ( 0 , 4 ) ] ;
3440: LD_ADDR_OWVAR 31
3444: PUSH
3445: LD_INT 1
3447: PPUSH
3448: LD_INT 4
3450: PPUSH
3451: CALL_OW 12
3455: PUSH
3456: LD_INT 0
3458: PPUSH
3459: LD_INT 4
3461: PPUSH
3462: CALL_OW 12
3466: PUSH
3467: LD_INT 0
3469: PPUSH
3470: LD_INT 4
3472: PPUSH
3473: CALL_OW 12
3477: PUSH
3478: LD_INT 0
3480: PPUSH
3481: LD_INT 4
3483: PPUSH
3484: CALL_OW 12
3488: PUSH
3489: EMPTY
3490: LIST
3491: LIST
3492: LIST
3493: LIST
3494: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
3495: LD_ADDR_OWVAR 27
3499: PUSH
3500: LD_INT 1
3502: PPUSH
3503: LD_INT 2
3505: PPUSH
3506: CALL_OW 12
3510: ST_TO_ADDR
// hc_class = 1 ;
3511: LD_ADDR_OWVAR 28
3515: PUSH
3516: LD_INT 1
3518: ST_TO_ADDR
// Ar1So = CreateHuman ;
3519: LD_ADDR_EXP 13
3523: PUSH
3524: CALL_OW 44
3528: ST_TO_ADDR
// Ar2So = CreateHuman ;
3529: LD_ADDR_EXP 14
3533: PUSH
3534: CALL_OW 44
3538: ST_TO_ADDR
// Ar3So = CreateHuman ;
3539: LD_ADDR_EXP 15
3543: PUSH
3544: CALL_OW 44
3548: ST_TO_ADDR
// hc_skills = [ Rand ( 2 , 5 ) , Rand ( 0 , 4 ) , Rand ( 0 , 4 ) , Rand ( 0 , 4 ) ] ;
3549: LD_ADDR_OWVAR 31
3553: PUSH
3554: LD_INT 2
3556: PPUSH
3557: LD_INT 5
3559: PPUSH
3560: CALL_OW 12
3564: PUSH
3565: LD_INT 0
3567: PPUSH
3568: LD_INT 4
3570: PPUSH
3571: CALL_OW 12
3575: PUSH
3576: LD_INT 0
3578: PPUSH
3579: LD_INT 4
3581: PPUSH
3582: CALL_OW 12
3586: PUSH
3587: LD_INT 0
3589: PPUSH
3590: LD_INT 4
3592: PPUSH
3593: CALL_OW 12
3597: PUSH
3598: EMPTY
3599: LIST
3600: LIST
3601: LIST
3602: LIST
3603: ST_TO_ADDR
// ArSzef = CreateHuman ;
3604: LD_ADDR_EXP 16
3608: PUSH
3609: CALL_OW 44
3613: ST_TO_ADDR
// PlaceUnitArea ( ArSzef , ArDow , false ) ;
3614: LD_EXP 16
3618: PPUSH
3619: LD_INT 9
3621: PPUSH
3622: LD_INT 0
3624: PPUSH
3625: CALL_OW 49
// PlaceUnitArea ( Ar1So , Ar1S , false ) ;
3629: LD_EXP 13
3633: PPUSH
3634: LD_INT 6
3636: PPUSH
3637: LD_INT 0
3639: PPUSH
3640: CALL_OW 49
// PlaceUnitArea ( Ar2So , Ar2S , false ) ;
3644: LD_EXP 14
3648: PPUSH
3649: LD_INT 7
3651: PPUSH
3652: LD_INT 0
3654: PPUSH
3655: CALL_OW 49
// PlaceUnitArea ( Ar3So , Ar3S , false ) ;
3659: LD_EXP 15
3663: PPUSH
3664: LD_INT 8
3666: PPUSH
3667: LD_INT 0
3669: PPUSH
3670: CALL_OW 49
// ComEnterUnit ( Ar1So , Ar1B ) ;
3674: LD_EXP 13
3678: PPUSH
3679: LD_INT 40
3681: PPUSH
3682: CALL_OW 120
// ComEnterUnit ( Ar2So , Ar2B ) ;
3686: LD_EXP 14
3690: PPUSH
3691: LD_INT 44
3693: PPUSH
3694: CALL_OW 120
// ComEnterUnit ( Ar3So , Ar3B ) ;
3698: LD_EXP 15
3702: PPUSH
3703: LD_INT 78
3705: PPUSH
3706: CALL_OW 120
// end ; end_of_file
3710: LD_VAR 0 1
3714: RET
// export function ResAllTechs ( side , lab ) ; var i , tech , cout ; begin
3715: LD_INT 0
3717: PPUSH
3718: PPUSH
3719: PPUSH
3720: PPUSH
// for i = 1 to 72 do
3721: LD_ADDR_VAR 0 4
3725: PUSH
3726: DOUBLE
3727: LD_INT 1
3729: DEC
3730: ST_TO_ADDR
3731: LD_INT 72
3733: PUSH
3734: FOR_TO
3735: IFFALSE 3773
// begin if GetTech ( i , side ) = state_enabled then
3737: LD_VAR 0 4
3741: PPUSH
3742: LD_VAR 0 1
3746: PPUSH
3747: CALL_OW 321
3751: PUSH
3752: LD_INT 1
3754: EQUAL
3755: IFFALSE 3771
// AddComResearch ( lab , i ) ;
3757: LD_VAR 0 2
3761: PPUSH
3762: LD_VAR 0 4
3766: PPUSH
3767: CALL_OW 184
// end ;
3771: GO 3734
3773: POP
3774: POP
// cout = cout + 1 ;
3775: LD_ADDR_VAR 0 6
3779: PUSH
3780: LD_VAR 0 6
3784: PUSH
3785: LD_INT 1
3787: PLUS
3788: ST_TO_ADDR
// Wait ( 0 0$01 ) ;
3789: LD_INT 35
3791: PPUSH
3792: CALL_OW 67
// end ;
3796: LD_VAR 0 3
3800: RET
// every 0 0$01 do
3801: GO 3803
3803: DISABLE
// begin ResAllTechs ( 3 , rulab ) ;
3804: LD_INT 3
3806: PPUSH
3807: LD_INT 21
3809: PPUSH
3810: CALL 3715 0 2
// ResAllTechs ( 2 , arlab ) ;
3814: LD_INT 2
3816: PPUSH
3817: LD_INT 73
3819: PPUSH
3820: CALL 3715 0 2
// end ;
3824: END
// export v_track , v_engine , v_control , v_weapon ; on VehicleConstructed ( un , fac ) do var i ;
3825: LD_INT 0
3827: PPUSH
// begin if fac = rufab then
3828: LD_VAR 0 2
3832: PUSH
3833: LD_INT 34
3835: EQUAL
3836: IFFALSE 3928
// if GetSide ( un ) = 3 then
3838: LD_VAR 0 1
3842: PPUSH
3843: CALL_OW 255
3847: PUSH
3848: LD_INT 3
3850: EQUAL
3851: IFFALSE 3928
// begin AddComAgressiveMove ( un , 106 , 64 ) ;
3853: LD_VAR 0 1
3857: PPUSH
3858: LD_INT 106
3860: PPUSH
3861: LD_INT 64
3863: PPUSH
3864: CALL_OW 174
// AddComAgressiveMove ( un , 129 , 32 ) ;
3868: LD_VAR 0 1
3872: PPUSH
3873: LD_INT 129
3875: PPUSH
3876: LD_INT 32
3878: PPUSH
3879: CALL_OW 174
// AddComAgressiveMove ( un , 92 , 5 ) ;
3883: LD_VAR 0 1
3887: PPUSH
3888: LD_INT 92
3890: PPUSH
3891: LD_INT 5
3893: PPUSH
3894: CALL_OW 174
// AddComAgressiveMove ( un , 28 , 4 ) ;
3898: LD_VAR 0 1
3902: PPUSH
3903: LD_INT 28
3905: PPUSH
3906: LD_INT 4
3908: PPUSH
3909: CALL_OW 174
// AddComAgressiveMove ( un , 70 , 114 ) ;
3913: LD_VAR 0 1
3917: PPUSH
3918: LD_INT 70
3920: PPUSH
3921: LD_INT 114
3923: PPUSH
3924: CALL_OW 174
// end ; end ;
3928: PPOPN 3
3930: END
// on BuildingComplete ( build ) do begin if GetBType ( build ) = 4 then
3931: LD_VAR 0 1
3935: PPUSH
3936: CALL_OW 266
3940: PUSH
3941: LD_INT 4
3943: EQUAL
3944: IFFALSE 4014
// begin SetSide ( SoldInBarrack [ 1 ] , 6 ) ;
3946: LD_EXP 17
3950: PUSH
3951: LD_INT 1
3953: ARRAY
3954: PPUSH
3955: LD_INT 6
3957: PPUSH
3958: CALL_OW 235
// SetSide ( SoldInBarrack [ 2 ] , 6 ) ;
3962: LD_EXP 17
3966: PUSH
3967: LD_INT 2
3969: ARRAY
3970: PPUSH
3971: LD_INT 6
3973: PPUSH
3974: CALL_OW 235
// ComEnterUnit ( SoldInBarrack [ 1 ] , build ) ;
3978: LD_EXP 17
3982: PUSH
3983: LD_INT 1
3985: ARRAY
3986: PPUSH
3987: LD_VAR 0 1
3991: PPUSH
3992: CALL_OW 120
// ComEnterUnit ( SoldInBarrack [ 2 ] , build ) ;
3996: LD_EXP 17
4000: PUSH
4001: LD_INT 2
4003: ARRAY
4004: PPUSH
4005: LD_VAR 0 1
4009: PPUSH
4010: CALL_OW 120
// end ; end ; end_of_file
4014: PPOPN 1
4016: END
// every 0 0$01 do var un , EnginerList , buildings , depots , i ;
4017: GO 4019
4019: DISABLE
4020: LD_INT 0
4022: PPUSH
4023: PPUSH
4024: PPUSH
4025: PPUSH
4026: PPUSH
// begin enable ;
4027: ENABLE
// EnginerList := FilterAllUnits ( [ [ [ f_side , 3 ] , [ f_class , 2 ] , [ f_lives , 1000 ] ] ] ) ;
4028: LD_ADDR_VAR 0 2
4032: PUSH
4033: LD_INT 22
4035: PUSH
4036: LD_INT 3
4038: PUSH
4039: EMPTY
4040: LIST
4041: LIST
4042: PUSH
4043: LD_INT 25
4045: PUSH
4046: LD_INT 2
4048: PUSH
4049: EMPTY
4050: LIST
4051: LIST
4052: PUSH
4053: LD_INT 24
4055: PUSH
4056: LD_INT 1000
4058: PUSH
4059: EMPTY
4060: LIST
4061: LIST
4062: PUSH
4063: EMPTY
4064: LIST
4065: LIST
4066: LIST
4067: PUSH
4068: EMPTY
4069: LIST
4070: PPUSH
4071: CALL_OW 69
4075: ST_TO_ADDR
// buildings := FilterAllUnits ( [ [ [ f_side , 3 ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ] ) ;
4076: LD_ADDR_VAR 0 3
4080: PUSH
4081: LD_INT 22
4083: PUSH
4084: LD_INT 3
4086: PUSH
4087: EMPTY
4088: LIST
4089: LIST
4090: PUSH
4091: LD_INT 21
4093: PUSH
4094: LD_INT 3
4096: PUSH
4097: EMPTY
4098: LIST
4099: LIST
4100: PUSH
4101: LD_INT 3
4103: PUSH
4104: LD_INT 24
4106: PUSH
4107: LD_INT 1000
4109: PUSH
4110: EMPTY
4111: LIST
4112: LIST
4113: PUSH
4114: EMPTY
4115: LIST
4116: LIST
4117: PUSH
4118: EMPTY
4119: LIST
4120: LIST
4121: LIST
4122: PUSH
4123: EMPTY
4124: LIST
4125: PPUSH
4126: CALL_OW 69
4130: ST_TO_ADDR
// if buildings > 0 then
4131: LD_VAR 0 3
4135: PUSH
4136: LD_INT 0
4138: GREATER
4139: IFFALSE 4221
// begin for i = 1 to EnginerList do
4141: LD_ADDR_VAR 0 5
4145: PUSH
4146: DOUBLE
4147: LD_INT 1
4149: DEC
4150: ST_TO_ADDR
4151: LD_VAR 0 2
4155: PUSH
4156: FOR_TO
4157: IFFALSE 4219
// begin if IsInUnit ( EnginerList [ i ] ) then
4159: LD_VAR 0 2
4163: PUSH
4164: LD_VAR 0 5
4168: ARRAY
4169: PPUSH
4170: CALL_OW 310
4174: IFFALSE 4193
// ComExitBuilding ( EnginerList [ i ] ) else
4176: LD_VAR 0 2
4180: PUSH
4181: LD_VAR 0 5
4185: ARRAY
4186: PPUSH
4187: CALL_OW 122
4191: GO 4217
// ComRepairBuilding ( EnginerList [ i ] , buildings [ 1 ] ) ;
4193: LD_VAR 0 2
4197: PUSH
4198: LD_VAR 0 5
4202: ARRAY
4203: PPUSH
4204: LD_VAR 0 3
4208: PUSH
4209: LD_INT 1
4211: ARRAY
4212: PPUSH
4213: CALL_OW 130
// end ;
4217: GO 4156
4219: POP
4220: POP
// end ; if buildings = 0 then
4221: LD_VAR 0 3
4225: PUSH
4226: LD_INT 0
4228: EQUAL
4229: IFFALSE 4307
// begin for i = 1 to EnginerList do
4231: LD_ADDR_VAR 0 5
4235: PUSH
4236: DOUBLE
4237: LD_INT 1
4239: DEC
4240: ST_TO_ADDR
4241: LD_VAR 0 2
4245: PUSH
4246: FOR_TO
4247: IFFALSE 4305
// begin if not HasTask ( EnginerList [ i ] ) and not IsInUnit ( EnginerList [ i ] ) then
4249: LD_VAR 0 2
4253: PUSH
4254: LD_VAR 0 5
4258: ARRAY
4259: PPUSH
4260: CALL_OW 314
4264: NOT
4265: PUSH
4266: LD_VAR 0 2
4270: PUSH
4271: LD_VAR 0 5
4275: ARRAY
4276: PPUSH
4277: CALL_OW 310
4281: NOT
4282: AND
4283: IFFALSE 4303
// ComEnterUnit ( EnginerList [ i ] , rudepo ) ;
4285: LD_VAR 0 2
4289: PUSH
4290: LD_VAR 0 5
4294: ARRAY
4295: PPUSH
4296: LD_INT 2
4298: PPUSH
4299: CALL_OW 120
// end ;
4303: GO 4246
4305: POP
4306: POP
// end ; end ;
4307: PPOPN 5
4309: END
// every 0 0$01 do var i , un , filter , fac ;
4310: GO 4312
4312: DISABLE
4313: LD_INT 0
4315: PPUSH
4316: PPUSH
4317: PPUSH
4318: PPUSH
// begin enable ;
4319: ENABLE
// filter := FilterAllUnits ( [ [ f_side , 3 ] , [ f_type , unit_vehicle ] ] ) ;
4320: LD_ADDR_VAR 0 3
4324: PUSH
4325: LD_INT 22
4327: PUSH
4328: LD_INT 3
4330: PUSH
4331: EMPTY
4332: LIST
4333: LIST
4334: PUSH
4335: LD_INT 21
4337: PUSH
4338: LD_INT 2
4340: PUSH
4341: EMPTY
4342: LIST
4343: LIST
4344: PUSH
4345: EMPTY
4346: LIST
4347: LIST
4348: PPUSH
4349: CALL_OW 69
4353: ST_TO_ADDR
// if filter > 0 then
4354: LD_VAR 0 3
4358: PUSH
4359: LD_INT 0
4361: GREATER
4362: IFFALSE 4616
// begin for i = 1 to filter do
4364: LD_ADDR_VAR 0 1
4368: PUSH
4369: DOUBLE
4370: LD_INT 1
4372: DEC
4373: ST_TO_ADDR
4374: LD_VAR 0 3
4378: PUSH
4379: FOR_TO
4380: IFFALSE 4614
// if GetLives ( filter [ i ] ) <= 650 then
4382: LD_VAR 0 3
4386: PUSH
4387: LD_VAR 0 1
4391: ARRAY
4392: PPUSH
4393: CALL_OW 256
4397: PUSH
4398: LD_INT 650
4400: LESSEQUAL
4401: IFFALSE 4612
// begin un := IsDrivenBy ( filter [ i ] ) ;
4403: LD_ADDR_VAR 0 2
4407: PUSH
4408: LD_VAR 0 3
4412: PUSH
4413: LD_VAR 0 1
4417: ARRAY
4418: PPUSH
4419: CALL_OW 311
4423: ST_TO_ADDR
// ComMoveToArea ( filter [ i ] , RuRepairZone ) ;
4424: LD_VAR 0 3
4428: PUSH
4429: LD_VAR 0 1
4433: ARRAY
4434: PPUSH
4435: LD_INT 15
4437: PPUSH
4438: CALL_OW 113
// AddComExitVehicle ( un ) ;
4442: LD_VAR 0 2
4446: PPUSH
4447: CALL_OW 181
// AddComRepairVehicle ( un , filter [ i ] ) ;
4451: LD_VAR 0 2
4455: PPUSH
4456: LD_VAR 0 3
4460: PUSH
4461: LD_VAR 0 1
4465: ARRAY
4466: PPUSH
4467: CALL_OW 189
// repeat Wait ( 0 0$01 ) ;
4471: LD_INT 35
4473: PPUSH
4474: CALL_OW 67
// until GetLives ( filter [ i ] ) = 1000 ;
4478: LD_VAR 0 3
4482: PUSH
4483: LD_VAR 0 1
4487: ARRAY
4488: PPUSH
4489: CALL_OW 256
4493: PUSH
4494: LD_INT 1000
4496: EQUAL
4497: IFFALSE 4471
// AddComEnterUnit ( un , filter [ i ] ) ;
4499: LD_VAR 0 2
4503: PPUSH
4504: LD_VAR 0 3
4508: PUSH
4509: LD_VAR 0 1
4513: ARRAY
4514: PPUSH
4515: CALL_OW 180
// SetFuel ( Filter [ i ] , 100 ) ;
4519: LD_VAR 0 3
4523: PUSH
4524: LD_VAR 0 1
4528: ARRAY
4529: PPUSH
4530: LD_INT 100
4532: PPUSH
4533: CALL_OW 240
// AddComAgressiveMove ( un , 106 , 64 ) ;
4537: LD_VAR 0 2
4541: PPUSH
4542: LD_INT 106
4544: PPUSH
4545: LD_INT 64
4547: PPUSH
4548: CALL_OW 174
// AddComAgressiveMove ( un , 129 , 32 ) ;
4552: LD_VAR 0 2
4556: PPUSH
4557: LD_INT 129
4559: PPUSH
4560: LD_INT 32
4562: PPUSH
4563: CALL_OW 174
// AddComAgressiveMove ( un , 92 , 5 ) ;
4567: LD_VAR 0 2
4571: PPUSH
4572: LD_INT 92
4574: PPUSH
4575: LD_INT 5
4577: PPUSH
4578: CALL_OW 174
// AddComAgressiveMove ( un , 28 , 4 ) ;
4582: LD_VAR 0 2
4586: PPUSH
4587: LD_INT 28
4589: PPUSH
4590: LD_INT 4
4592: PPUSH
4593: CALL_OW 174
// AddComAgressiveMove ( un , 70 , 114 ) ;
4597: LD_VAR 0 2
4601: PPUSH
4602: LD_INT 70
4604: PPUSH
4605: LD_INT 114
4607: PPUSH
4608: CALL_OW 174
// end ;
4612: GO 4379
4614: POP
4615: POP
// end ; end ;
4616: PPOPN 4
4618: END
// every 0 0$1 do var EnginerList , HealerList , i ;
4619: GO 4621
4621: DISABLE
4622: LD_INT 0
4624: PPUSH
4625: PPUSH
4626: PPUSH
// begin enable ;
4627: ENABLE
// EnginerList := FilterAllUnits ( [ [ f_side , 3 ] , [ f_class , 2 ] , [ f_not , [ f_lives , 820 ] ] ] ) ;
4628: LD_ADDR_VAR 0 1
4632: PUSH
4633: LD_INT 22
4635: PUSH
4636: LD_INT 3
4638: PUSH
4639: EMPTY
4640: LIST
4641: LIST
4642: PUSH
4643: LD_INT 25
4645: PUSH
4646: LD_INT 2
4648: PUSH
4649: EMPTY
4650: LIST
4651: LIST
4652: PUSH
4653: LD_INT 3
4655: PUSH
4656: LD_INT 24
4658: PUSH
4659: LD_INT 820
4661: PUSH
4662: EMPTY
4663: LIST
4664: LIST
4665: PUSH
4666: EMPTY
4667: LIST
4668: LIST
4669: PUSH
4670: EMPTY
4671: LIST
4672: LIST
4673: LIST
4674: PPUSH
4675: CALL_OW 69
4679: ST_TO_ADDR
// HealerList := FilterAllUnits ( [ [ f_side , 3 ] , [ f_class , 4 ] ] ) ;
4680: LD_ADDR_VAR 0 2
4684: PUSH
4685: LD_INT 22
4687: PUSH
4688: LD_INT 3
4690: PUSH
4691: EMPTY
4692: LIST
4693: LIST
4694: PUSH
4695: LD_INT 25
4697: PUSH
4698: LD_INT 4
4700: PUSH
4701: EMPTY
4702: LIST
4703: LIST
4704: PUSH
4705: EMPTY
4706: LIST
4707: LIST
4708: PPUSH
4709: CALL_OW 69
4713: ST_TO_ADDR
// if EnginerList > 0 then
4714: LD_VAR 0 1
4718: PUSH
4719: LD_INT 0
4721: GREATER
4722: IFFALSE 4887
// begin for i = 1 to EnginerList do
4724: LD_ADDR_VAR 0 3
4728: PUSH
4729: DOUBLE
4730: LD_INT 1
4732: DEC
4733: ST_TO_ADDR
4734: LD_VAR 0 1
4738: PUSH
4739: FOR_TO
4740: IFFALSE 4885
// begin ComExitBuilding ( HealerList [ 1 ] ) ;
4742: LD_VAR 0 2
4746: PUSH
4747: LD_INT 1
4749: ARRAY
4750: PPUSH
4751: CALL_OW 122
// if IsInUnit ( EnginerList [ i ] ) then
4755: LD_VAR 0 1
4759: PUSH
4760: LD_VAR 0 3
4764: ARRAY
4765: PPUSH
4766: CALL_OW 310
4770: IFFALSE 4787
// ComExitBuilding ( EnginerList [ i ] ) ;
4772: LD_VAR 0 1
4776: PUSH
4777: LD_VAR 0 3
4781: ARRAY
4782: PPUSH
4783: CALL_OW 122
// wait ( 0 0$1 ) ;
4787: LD_INT 35
4789: PPUSH
4790: CALL_OW 67
// ComMoveToArea ( EnginerList [ 1 ] , RuHealZone ) ;
4794: LD_VAR 0 1
4798: PUSH
4799: LD_INT 1
4801: ARRAY
4802: PPUSH
4803: LD_INT 13
4805: PPUSH
4806: CALL_OW 113
// if not IsInUnit ( EnginerList [ i ] ) then
4810: LD_VAR 0 1
4814: PUSH
4815: LD_VAR 0 3
4819: ARRAY
4820: PPUSH
4821: CALL_OW 310
4825: NOT
4826: IFFALSE 4846
// ComMoveToArea ( EnginerList [ i ] , RuHealZone ) ;
4828: LD_VAR 0 1
4832: PUSH
4833: LD_VAR 0 3
4837: ARRAY
4838: PPUSH
4839: LD_INT 13
4841: PPUSH
4842: CALL_OW 113
// if GetLives ( EnginerList [ i ] ) = 1000 then
4846: LD_VAR 0 1
4850: PUSH
4851: LD_VAR 0 3
4855: ARRAY
4856: PPUSH
4857: CALL_OW 256
4861: PUSH
4862: LD_INT 1000
4864: EQUAL
4865: IFFALSE 4883
// ComEnterUnit ( HealerList [ 1 ] , rulab ) ;
4867: LD_VAR 0 2
4871: PUSH
4872: LD_INT 1
4874: ARRAY
4875: PPUSH
4876: LD_INT 21
4878: PPUSH
4879: CALL_OW 120
// end ;
4883: GO 4739
4885: POP
4886: POP
// end ; end ;
4887: PPOPN 3
4889: END
// every 0 0$1 trigger GetLives ( Ru1So ) < 999 do
4890: LD_EXP 11
4894: PPUSH
4895: CALL_OW 256
4899: PUSH
4900: LD_INT 999
4902: LESS
4903: IFFALSE 4920
4905: GO 4907
4907: DISABLE
// begin ComEnterUnit ( Ru1So , RuBar ) ;
4908: LD_EXP 11
4912: PPUSH
4913: LD_INT 11
4915: PPUSH
4916: CALL_OW 120
// end ;
4920: END
// every 0 0$01 do var un , EnginerList , buildings , depots , i ;
4921: GO 4923
4923: DISABLE
4924: LD_INT 0
4926: PPUSH
4927: PPUSH
4928: PPUSH
4929: PPUSH
4930: PPUSH
// begin enable ;
4931: ENABLE
// EnginerList := FilterAllUnits ( [ [ [ f_side , 2 ] , [ f_class , 2 ] , [ f_lives , 1000 ] ] ] ) ;
4932: LD_ADDR_VAR 0 2
4936: PUSH
4937: LD_INT 22
4939: PUSH
4940: LD_INT 2
4942: PUSH
4943: EMPTY
4944: LIST
4945: LIST
4946: PUSH
4947: LD_INT 25
4949: PUSH
4950: LD_INT 2
4952: PUSH
4953: EMPTY
4954: LIST
4955: LIST
4956: PUSH
4957: LD_INT 24
4959: PUSH
4960: LD_INT 1000
4962: PUSH
4963: EMPTY
4964: LIST
4965: LIST
4966: PUSH
4967: EMPTY
4968: LIST
4969: LIST
4970: LIST
4971: PUSH
4972: EMPTY
4973: LIST
4974: PPUSH
4975: CALL_OW 69
4979: ST_TO_ADDR
// buildings := FilterAllUnits ( [ [ [ f_side , 2 ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ] ) ;
4980: LD_ADDR_VAR 0 3
4984: PUSH
4985: LD_INT 22
4987: PUSH
4988: LD_INT 2
4990: PUSH
4991: EMPTY
4992: LIST
4993: LIST
4994: PUSH
4995: LD_INT 21
4997: PUSH
4998: LD_INT 3
5000: PUSH
5001: EMPTY
5002: LIST
5003: LIST
5004: PUSH
5005: LD_INT 3
5007: PUSH
5008: LD_INT 24
5010: PUSH
5011: LD_INT 1000
5013: PUSH
5014: EMPTY
5015: LIST
5016: LIST
5017: PUSH
5018: EMPTY
5019: LIST
5020: LIST
5021: PUSH
5022: EMPTY
5023: LIST
5024: LIST
5025: LIST
5026: PUSH
5027: EMPTY
5028: LIST
5029: PPUSH
5030: CALL_OW 69
5034: ST_TO_ADDR
// if buildings > 0 then
5035: LD_VAR 0 3
5039: PUSH
5040: LD_INT 0
5042: GREATER
5043: IFFALSE 5125
// begin for i = 1 to EnginerList do
5045: LD_ADDR_VAR 0 5
5049: PUSH
5050: DOUBLE
5051: LD_INT 1
5053: DEC
5054: ST_TO_ADDR
5055: LD_VAR 0 2
5059: PUSH
5060: FOR_TO
5061: IFFALSE 5123
// begin if IsInUnit ( EnginerList [ i ] ) then
5063: LD_VAR 0 2
5067: PUSH
5068: LD_VAR 0 5
5072: ARRAY
5073: PPUSH
5074: CALL_OW 310
5078: IFFALSE 5097
// ComExitBuilding ( EnginerList [ i ] ) else
5080: LD_VAR 0 2
5084: PUSH
5085: LD_VAR 0 5
5089: ARRAY
5090: PPUSH
5091: CALL_OW 122
5095: GO 5121
// ComRepairBuilding ( EnginerList [ i ] , buildings [ 1 ] ) ;
5097: LD_VAR 0 2
5101: PUSH
5102: LD_VAR 0 5
5106: ARRAY
5107: PPUSH
5108: LD_VAR 0 3
5112: PUSH
5113: LD_INT 1
5115: ARRAY
5116: PPUSH
5117: CALL_OW 130
// end ;
5121: GO 5060
5123: POP
5124: POP
// end ; if buildings = 0 then
5125: LD_VAR 0 3
5129: PUSH
5130: LD_INT 0
5132: EQUAL
5133: IFFALSE 5211
// begin for i = 1 to EnginerList do
5135: LD_ADDR_VAR 0 5
5139: PUSH
5140: DOUBLE
5141: LD_INT 1
5143: DEC
5144: ST_TO_ADDR
5145: LD_VAR 0 2
5149: PUSH
5150: FOR_TO
5151: IFFALSE 5209
// begin if not HasTask ( EnginerList [ i ] ) and not IsInUnit ( EnginerList [ i ] ) then
5153: LD_VAR 0 2
5157: PUSH
5158: LD_VAR 0 5
5162: ARRAY
5163: PPUSH
5164: CALL_OW 314
5168: NOT
5169: PUSH
5170: LD_VAR 0 2
5174: PUSH
5175: LD_VAR 0 5
5179: ARRAY
5180: PPUSH
5181: CALL_OW 310
5185: NOT
5186: AND
5187: IFFALSE 5207
// ComEnterUnit ( EnginerList [ i ] , ardepo ) ;
5189: LD_VAR 0 2
5193: PUSH
5194: LD_VAR 0 5
5198: ARRAY
5199: PPUSH
5200: LD_INT 71
5202: PPUSH
5203: CALL_OW 120
// end ;
5207: GO 5150
5209: POP
5210: POP
// end ; end ;
5211: PPOPN 5
5213: END
// every 0 0$1 do var EnginerList , HealerList , i ;
5214: GO 5216
5216: DISABLE
5217: LD_INT 0
5219: PPUSH
5220: PPUSH
5221: PPUSH
// begin enable ;
5222: ENABLE
// EnginerList := FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , 2 ] , [ f_not , [ f_lives , 820 ] ] ] ) ;
5223: LD_ADDR_VAR 0 1
5227: PUSH
5228: LD_INT 22
5230: PUSH
5231: LD_INT 2
5233: PUSH
5234: EMPTY
5235: LIST
5236: LIST
5237: PUSH
5238: LD_INT 25
5240: PUSH
5241: LD_INT 2
5243: PUSH
5244: EMPTY
5245: LIST
5246: LIST
5247: PUSH
5248: LD_INT 3
5250: PUSH
5251: LD_INT 24
5253: PUSH
5254: LD_INT 820
5256: PUSH
5257: EMPTY
5258: LIST
5259: LIST
5260: PUSH
5261: EMPTY
5262: LIST
5263: LIST
5264: PUSH
5265: EMPTY
5266: LIST
5267: LIST
5268: LIST
5269: PPUSH
5270: CALL_OW 69
5274: ST_TO_ADDR
// HealerList := FilterAllUnits ( [ [ f_side , 2 ] , [ f_class , 4 ] ] ) ;
5275: LD_ADDR_VAR 0 2
5279: PUSH
5280: LD_INT 22
5282: PUSH
5283: LD_INT 2
5285: PUSH
5286: EMPTY
5287: LIST
5288: LIST
5289: PUSH
5290: LD_INT 25
5292: PUSH
5293: LD_INT 4
5295: PUSH
5296: EMPTY
5297: LIST
5298: LIST
5299: PUSH
5300: EMPTY
5301: LIST
5302: LIST
5303: PPUSH
5304: CALL_OW 69
5308: ST_TO_ADDR
// if EnginerList > 0 then
5309: LD_VAR 0 1
5313: PUSH
5314: LD_INT 0
5316: GREATER
5317: IFFALSE 5482
// begin for i = 1 to EnginerList do
5319: LD_ADDR_VAR 0 3
5323: PUSH
5324: DOUBLE
5325: LD_INT 1
5327: DEC
5328: ST_TO_ADDR
5329: LD_VAR 0 1
5333: PUSH
5334: FOR_TO
5335: IFFALSE 5480
// begin ComExitBuilding ( HealerList [ 1 ] ) ;
5337: LD_VAR 0 2
5341: PUSH
5342: LD_INT 1
5344: ARRAY
5345: PPUSH
5346: CALL_OW 122
// if IsInUnit ( EnginerList [ i ] ) then
5350: LD_VAR 0 1
5354: PUSH
5355: LD_VAR 0 3
5359: ARRAY
5360: PPUSH
5361: CALL_OW 310
5365: IFFALSE 5382
// ComExitBuilding ( EnginerList [ i ] ) ;
5367: LD_VAR 0 1
5371: PUSH
5372: LD_VAR 0 3
5376: ARRAY
5377: PPUSH
5378: CALL_OW 122
// wait ( 0 0$1 ) ;
5382: LD_INT 35
5384: PPUSH
5385: CALL_OW 67
// ComMoveToArea ( EnginerList [ 1 ] , ArHealZone ) ;
5389: LD_VAR 0 1
5393: PUSH
5394: LD_INT 1
5396: ARRAY
5397: PPUSH
5398: LD_INT 14
5400: PPUSH
5401: CALL_OW 113
// if not IsInUnit ( EnginerList [ i ] ) then
5405: LD_VAR 0 1
5409: PUSH
5410: LD_VAR 0 3
5414: ARRAY
5415: PPUSH
5416: CALL_OW 310
5420: NOT
5421: IFFALSE 5441
// ComMoveToArea ( EnginerList [ i ] , ArHealZone ) ;
5423: LD_VAR 0 1
5427: PUSH
5428: LD_VAR 0 3
5432: ARRAY
5433: PPUSH
5434: LD_INT 14
5436: PPUSH
5437: CALL_OW 113
// if GetLives ( EnginerList [ i ] ) = 1000 then
5441: LD_VAR 0 1
5445: PUSH
5446: LD_VAR 0 3
5450: ARRAY
5451: PPUSH
5452: CALL_OW 256
5456: PUSH
5457: LD_INT 1000
5459: EQUAL
5460: IFFALSE 5478
// ComEnterUnit ( HealerList [ 1 ] , rulab ) ;
5462: LD_VAR 0 2
5466: PUSH
5467: LD_INT 1
5469: ARRAY
5470: PPUSH
5471: LD_INT 21
5473: PPUSH
5474: CALL_OW 120
// end ;
5478: GO 5334
5480: POP
5481: POP
// end ; end ; end_of_file
5482: PPOPN 3
5484: END
// export function PrepareOilBarrel ; var ResDiffS , ResDiffD ; begin
5485: LD_INT 0
5487: PPUSH
5488: PPUSH
5489: PPUSH
// ResDiffS = [ 1 , 1 , 1 ] [ Difficulty ] ;
5490: LD_ADDR_VAR 0 2
5494: PUSH
5495: LD_INT 1
5497: PUSH
5498: LD_INT 1
5500: PUSH
5501: LD_INT 1
5503: PUSH
5504: EMPTY
5505: LIST
5506: LIST
5507: LIST
5508: PUSH
5509: LD_OWVAR 67
5513: ARRAY
5514: ST_TO_ADDR
// ResDiffD = [ 5 , 3 , 1 ] [ Difficulty ] ;
5515: LD_ADDR_VAR 0 3
5519: PUSH
5520: LD_INT 5
5522: PUSH
5523: LD_INT 3
5525: PUSH
5526: LD_INT 1
5528: PUSH
5529: EMPTY
5530: LIST
5531: LIST
5532: LIST
5533: PUSH
5534: LD_OWVAR 67
5538: ARRAY
5539: ST_TO_ADDR
// CreateResourcesArea ( 2 , Rand ( ResDiffS , ResDiffD ) , OilBarel , false ) ;
5540: LD_INT 2
5542: PPUSH
5543: LD_VAR 0 2
5547: PPUSH
5548: LD_VAR 0 3
5552: PPUSH
5553: CALL_OW 12
5557: PPUSH
5558: LD_INT 16
5560: PPUSH
5561: LD_INT 0
5563: PPUSH
5564: CALL_OW 59
// CreateResourcesArea ( 2 , Rand ( ResDiffS , ResDiffD ) , OilBarel , false ) ;
5568: LD_INT 2
5570: PPUSH
5571: LD_VAR 0 2
5575: PPUSH
5576: LD_VAR 0 3
5580: PPUSH
5581: CALL_OW 12
5585: PPUSH
5586: LD_INT 16
5588: PPUSH
5589: LD_INT 0
5591: PPUSH
5592: CALL_OW 59
// CreateResourcesArea ( 2 , Rand ( ResDiffS , ResDiffD ) , OilBarel , false ) ;
5596: LD_INT 2
5598: PPUSH
5599: LD_VAR 0 2
5603: PPUSH
5604: LD_VAR 0 3
5608: PPUSH
5609: CALL_OW 12
5613: PPUSH
5614: LD_INT 16
5616: PPUSH
5617: LD_INT 0
5619: PPUSH
5620: CALL_OW 59
// CreateResourcesArea ( 2 , Rand ( ResDiffS , ResDiffD ) , OilBarel , false ) ;
5624: LD_INT 2
5626: PPUSH
5627: LD_VAR 0 2
5631: PPUSH
5632: LD_VAR 0 3
5636: PPUSH
5637: CALL_OW 12
5641: PPUSH
5642: LD_INT 16
5644: PPUSH
5645: LD_INT 0
5647: PPUSH
5648: CALL_OW 59
// CreateResourcesArea ( 2 , Rand ( ResDiffS , ResDiffD ) , OilBarel , false ) ;
5652: LD_INT 2
5654: PPUSH
5655: LD_VAR 0 2
5659: PPUSH
5660: LD_VAR 0 3
5664: PPUSH
5665: CALL_OW 12
5669: PPUSH
5670: LD_INT 16
5672: PPUSH
5673: LD_INT 0
5675: PPUSH
5676: CALL_OW 59
// CreateResourcesArea ( 2 , Rand ( ResDiffS , ResDiffD ) , OilBarel , false ) ;
5680: LD_INT 2
5682: PPUSH
5683: LD_VAR 0 2
5687: PPUSH
5688: LD_VAR 0 3
5692: PPUSH
5693: CALL_OW 12
5697: PPUSH
5698: LD_INT 16
5700: PPUSH
5701: LD_INT 0
5703: PPUSH
5704: CALL_OW 59
// end ; end_of_file
5708: LD_VAR 0 1
5712: RET
// export apemans , tigers , birds ; export function PrepareNature ; var l , apeman , tiger , bird ; begin
5713: LD_INT 0
5715: PPUSH
5716: PPUSH
5717: PPUSH
5718: PPUSH
5719: PPUSH
// apemans := [ ] ;
5720: LD_ADDR_EXP 22
5724: PUSH
5725: EMPTY
5726: ST_TO_ADDR
// tigers := [ ] ;
5727: LD_ADDR_EXP 23
5731: PUSH
5732: EMPTY
5733: ST_TO_ADDR
// birds := [ ] ;
5734: LD_ADDR_EXP 24
5738: PUSH
5739: EMPTY
5740: ST_TO_ADDR
// uc_nation = nation_nature ;
5741: LD_ADDR_OWVAR 21
5745: PUSH
5746: LD_INT 0
5748: ST_TO_ADDR
// uc_side = 0 ;
5749: LD_ADDR_OWVAR 20
5753: PUSH
5754: LD_INT 0
5756: ST_TO_ADDR
// l = 0 ;
5757: LD_ADDR_VAR 0 2
5761: PUSH
5762: LD_INT 0
5764: ST_TO_ADDR
// repeat begin uc_direction = Rand ( 0 , 5 ) ;
5765: LD_ADDR_OWVAR 24
5769: PUSH
5770: LD_INT 0
5772: PPUSH
5773: LD_INT 5
5775: PPUSH
5776: CALL_OW 12
5780: ST_TO_ADDR
// hc_agressivity = Rand ( 0 , 25 ) ;
5781: LD_ADDR_OWVAR 35
5785: PUSH
5786: LD_INT 0
5788: PPUSH
5789: LD_INT 25
5791: PPUSH
5792: CALL_OW 12
5796: ST_TO_ADDR
// hc_gallery =  ;
5797: LD_ADDR_OWVAR 33
5801: PUSH
5802: LD_STRING 
5804: ST_TO_ADDR
// hc_class = class_apeman ;
5805: LD_ADDR_OWVAR 28
5809: PUSH
5810: LD_INT 12
5812: ST_TO_ADDR
// hc_attr = [ Rand ( 11 , 13 ) , Rand ( 10 , 11 ) ] ;
5813: LD_ADDR_OWVAR 29
5817: PUSH
5818: LD_INT 11
5820: PPUSH
5821: LD_INT 13
5823: PPUSH
5824: CALL_OW 12
5828: PUSH
5829: LD_INT 10
5831: PPUSH
5832: LD_INT 11
5834: PPUSH
5835: CALL_OW 12
5839: PUSH
5840: EMPTY
5841: LIST
5842: LIST
5843: ST_TO_ADDR
// hc_sex = sex_male ;
5844: LD_ADDR_OWVAR 27
5848: PUSH
5849: LD_INT 1
5851: ST_TO_ADDR
// hc_skills = [ Rand ( 0 , 2 ) , 0 , 0 , 0 ] ;
5852: LD_ADDR_OWVAR 31
5856: PUSH
5857: LD_INT 0
5859: PPUSH
5860: LD_INT 2
5862: PPUSH
5863: CALL_OW 12
5867: PUSH
5868: LD_INT 0
5870: PUSH
5871: LD_INT 0
5873: PUSH
5874: LD_INT 0
5876: PUSH
5877: EMPTY
5878: LIST
5879: LIST
5880: LIST
5881: LIST
5882: ST_TO_ADDR
// apeman = CreateHuman ;
5883: LD_ADDR_VAR 0 3
5887: PUSH
5888: CALL_OW 44
5892: ST_TO_ADDR
// PlaceUnitArea ( apeman , MapA , false ) ;
5893: LD_VAR 0 3
5897: PPUSH
5898: LD_INT 18
5900: PPUSH
5901: LD_INT 0
5903: PPUSH
5904: CALL_OW 49
// apemans := apemans ^ apeman ;
5908: LD_ADDR_EXP 22
5912: PUSH
5913: LD_EXP 22
5917: PUSH
5918: LD_VAR 0 3
5922: ADD
5923: ST_TO_ADDR
// l = l + 1 ;
5924: LD_ADDR_VAR 0 2
5928: PUSH
5929: LD_VAR 0 2
5933: PUSH
5934: LD_INT 1
5936: PLUS
5937: ST_TO_ADDR
// end until l = 6 ;
5938: LD_VAR 0 2
5942: PUSH
5943: LD_INT 6
5945: EQUAL
5946: IFFALSE 5765
// l = 0 ;
5948: LD_ADDR_VAR 0 2
5952: PUSH
5953: LD_INT 0
5955: ST_TO_ADDR
// repeat begin hc_agressivity = Rand ( 0 , 30 ) ;
5956: LD_ADDR_OWVAR 35
5960: PUSH
5961: LD_INT 0
5963: PPUSH
5964: LD_INT 30
5966: PPUSH
5967: CALL_OW 12
5971: ST_TO_ADDR
// hc_class = class_tiger ;
5972: LD_ADDR_OWVAR 28
5976: PUSH
5977: LD_INT 14
5979: ST_TO_ADDR
// hc_sex = sex_male ;
5980: LD_ADDR_OWVAR 27
5984: PUSH
5985: LD_INT 1
5987: ST_TO_ADDR
// hc_gallery = nature ;
5988: LD_ADDR_OWVAR 33
5992: PUSH
5993: LD_STRING nature
5995: ST_TO_ADDR
// hc_face_number = 3 ;
5996: LD_ADDR_OWVAR 34
6000: PUSH
6001: LD_INT 3
6003: ST_TO_ADDR
// tiger = CreateHuman ;
6004: LD_ADDR_VAR 0 4
6008: PUSH
6009: CALL_OW 44
6013: ST_TO_ADDR
// PlaceUnitArea ( tiger , MapA , false ) ;
6014: LD_VAR 0 4
6018: PPUSH
6019: LD_INT 18
6021: PPUSH
6022: LD_INT 0
6024: PPUSH
6025: CALL_OW 49
// tigers := tigers ^ tiger ;
6029: LD_ADDR_EXP 23
6033: PUSH
6034: LD_EXP 23
6038: PUSH
6039: LD_VAR 0 4
6043: ADD
6044: ST_TO_ADDR
// l = l + 1 ;
6045: LD_ADDR_VAR 0 2
6049: PUSH
6050: LD_VAR 0 2
6054: PUSH
6055: LD_INT 1
6057: PLUS
6058: ST_TO_ADDR
// end until l = [ 1 , 2 , 3 ] [ Difficulty ] ;
6059: LD_VAR 0 2
6063: PUSH
6064: LD_INT 1
6066: PUSH
6067: LD_INT 2
6069: PUSH
6070: LD_INT 3
6072: PUSH
6073: EMPTY
6074: LIST
6075: LIST
6076: LIST
6077: PUSH
6078: LD_OWVAR 67
6082: ARRAY
6083: EQUAL
6084: IFFALSE 5956
// l = 0 ;
6086: LD_ADDR_VAR 0 2
6090: PUSH
6091: LD_INT 0
6093: ST_TO_ADDR
// repeat begin hc_class = class_phororhacos ;
6094: LD_ADDR_OWVAR 28
6098: PUSH
6099: LD_INT 18
6101: ST_TO_ADDR
// hc_gallery = nature ;
6102: LD_ADDR_OWVAR 33
6106: PUSH
6107: LD_STRING nature
6109: ST_TO_ADDR
// hc_face_number = 1 ;
6110: LD_ADDR_OWVAR 34
6114: PUSH
6115: LD_INT 1
6117: ST_TO_ADDR
// bird = CreateHuman ;
6118: LD_ADDR_VAR 0 5
6122: PUSH
6123: CALL_OW 44
6127: ST_TO_ADDR
// PlaceUnitArea ( bird , MapA , false ) ;
6128: LD_VAR 0 5
6132: PPUSH
6133: LD_INT 18
6135: PPUSH
6136: LD_INT 0
6138: PPUSH
6139: CALL_OW 49
// birds := birds ^ bird ;
6143: LD_ADDR_EXP 24
6147: PUSH
6148: LD_EXP 24
6152: PUSH
6153: LD_VAR 0 5
6157: ADD
6158: ST_TO_ADDR
// l = l + 1 ;
6159: LD_ADDR_VAR 0 2
6163: PUSH
6164: LD_VAR 0 2
6168: PUSH
6169: LD_INT 1
6171: PLUS
6172: ST_TO_ADDR
// end until l = 4 ;
6173: LD_VAR 0 2
6177: PUSH
6178: LD_INT 4
6180: EQUAL
6181: IFFALSE 6094
// l = 0 ;
6183: LD_ADDR_VAR 0 2
6187: PUSH
6188: LD_INT 0
6190: ST_TO_ADDR
// end ;
6191: LD_VAR 0 1
6195: RET
